set -x 会在执行每一行 shell 脚本时,把执行的内容输出来。它可以让你看到当前执行的情况,里面涉及的变量也会被替换成实际的值。 set -u 当执行时使用到未定义过的变量,则显示错误信息。 set -e 会在执行出错时结束程序,就像其他语言中的“抛出异常”一样。(准确说,不是所有出错的时候都会结束程序,见下面的...
/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/...
set -u 专门针对变量的模式,如果有未赋值定义的变量,通常对程序意味着冗余,无效,这不是我们所希望的事情。(如果,shell使用了大量的变量的话),或者,某个变量为空,而在脚本内rm -rf 变量,此时,set -u将会保护你,因为,如果为空,而又没有-u,rm -rf 命令将会删除一切,这个时候,你设置了set -u 可能会救你...
set -u: (set -o nounset), 表示此命令之后,当某命令使用了未定义变量或参数时(特殊参数“@”和“*”除外),将打印错误信息。如果是非交互环境(通常为脚本中),将直接退出,不再执行后续命令 set +u: set -u的反向操作,恢复bash shell的默认行为,命令使用未定义变量或参数时,继续执行后续命令 __EOF__...
set -u的作用:在脚本中出现没定义的变量的时候运行的时候会报错并且中断运行; >不加set的时候 [root@localhost ~]# sh /root/shell_learning/set-u.sh shark! shark ... set -u <---只加入这一行 echo shark! echo $a echo shark --->执行结果 [root@localhost shell_learning]# sh set-u.sh sh...
set +e command1 command2 set -e 上面代码中,set +e表示关闭-e选项,set -e表示重新打开-e选项。 还有一种方法是使用command || true,使得该命令即使执行失败,脚本也不会终止执行。
set -u 当脚本中遇到未定义的变量时,默认是忽略。 有时候这并不是开发者想要的。 假如有未定义的变量,应该报错,并且终止脚本继续运行。 set -u 就可以办到 示例 执...
set命令⽤来修改 Shell 环境的运⾏参数,也就是可以定制环境。⼀共有⼗⼏个参数可以定制,有完整清单,本⽂介绍其中最常⽤的四个。如果命令⾏下不带任何参数,直接运⾏set,会显⽰所有的环境变量和 Shell 函数。$ set ⼆、set -u 执⾏脚本的时候,如果遇到不存在的变量,Bash 默认忽略它。...
set -u rm -fr $a/* echo hello 运行结果如下: $ bash test.sh test.sh: line 4: a: unbound variable 可以看到,因为 a 是未定义变量,脚本报错了,并且不再执行后面的语句。 方案三:safe-rm 替换 rm safe-rm 是一个开源软件工具,这名字听起来就很安全嘛,所以它是用来替代不太安全的 rm。
shell脚本是没有debug模式的,不过可以通过set指令实现简单的debug功能 shell脚本中默认每条指令都会从上到下依次执行,但是当某行指令报错时,我们大多数情况下是不希望继续执行后续指令的 这时可以使用shell脚本中set指令的四个参数:-e、-u、-x、-o pipefail ...