下面图片中的:Linux: 脚本中添加set -e/u、set +e/u作用及作用域证明_Linux
我看脚本中set +e、set -e、set +u、set -u是蒙圈的,这些表示什么意思呢?
在redhat系统执行:​​​man set​​​可以看到set 的说明。
set -e: 表示该命令之后,当出现命令行返回值为非0的情况时,脚本直接退出,后续命令不在执行。

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

样例验证说明正确及作用域

set +/-e样例:

hello.sh内容如下:

#! /bin/bash
set +e
sshExec=$(which ssh1d)
echo $?
echo "hello world.."
set -e
echo "error cmd"
sshExec=$(which ssh1d)
echo $?
echo "hello world.."

执行命令:​​sh hello.sh​​​Linux: 脚本中添加set -e/u、set +e/u作用及作用域证明_set +u_02

验证使用**+e**:即使脚本中有命令执行失败,脚本还会继续往下执行
验证使用**-e**:即使脚本中有命令执行失败,脚本会直接退出

set +/-u样例:

#! /bin/bash
set +u
echo $undefin_var
echo "hello world.."

set -u
echo $undefin_var
echo "hello boy"

Linux: 脚本中添加set -e/u、set +e/u作用及作用域证明_set -u_03
set +u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令继续执行。
set -u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令不在执行。