shell中 ,set -u之后,使用没有初始化的变量,会导致报错
set -u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令不在执行。
我们来试试。
准备一个脚本t1.sh: 没有set -u之前,$1存在、不存在都可以,运行不报错: - $ /bin/bash t1.sh
- 1:
- $ /bin/bash t1.sh 2
- 1:2
复制代码/bin/bash -u执行脚本相当于在子shell中做了set -u,/bin/bash -u xx.sh ,如果$1不存在,则会报错: - $ /bin/bash -u t1.sh 2
- 1:2
- $ /bin/bash -u t1.sh
- t1.sh: 行 1: $1: 未绑定的变量
复制代码我们试试set +u | set-u对当前进程和子进程的影响:
准备另个一个脚本t2.sh: - #!/bin/bash
- echo "aaa : $aaa"
复制代码运行: - $ set -u
- $ echo $bbb
- -bash: bbb: 未绑定的变量
- $ ./t2.sh
- aaa :
- $ . t2.sh
- -bash: aaa: 未绑定的变量
复制代码- $ set +u
- $ echo $bbb
- $ ./t2.sh
- aaa :
- $ . t2.sh
- aaa :
复制代码可见set +u | set -u只作用于本进程,不会作用于子进程。
到此这篇关于shell set -u 和set +u的具体使用的文章就介绍到这了,更多相关shell set -u 和set +u内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |