当前位置: 代码网 > 服务器>服务器>Linux > shell set -u 和set +u的具体使用

shell set -u 和set +u的具体使用

2024年06月10日 Linux 我要评论
shell中 ,set -u之后,使用没有初始化的变量,会导致报错set -u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令不在执行。我们来试试。准备一个脚本t1.sh:ec

shell中 ,set -u之后,使用没有初始化的变量,会导致报错

set -u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令不在执行。

我们来试试。

准备一个脚本t1.sh:

echo "1:$1"

没有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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com