我有一个意外的行为 - 以下代码段因“未绑定变量”错误而失败:
#!/bin/bash
set -u
<<EOF
a=a
b=$a
EOF
Run Code Online (Sandbox Code Playgroud)
测试:
GNU bash,版本 4.4.12(1)-release
GNU bash,版本 4.2.46(2)-release
我在以下 bash 脚本中遇到 -e 标志的异常问题:
#!/bin/bash -e
foo() { return 1; }
bar() { foo; bar; }
bar || exit 1
Run Code Online (Sandbox Code Playgroud)
即,即使 foo 函数返回 1,脚本也不会终止。但是在删除 '|| 后 exit 1' 部分此脚本按预期工作 - 它在第一次 foo 执行后失败。
#!/bin/bash -e
foo() { return 1; }
bar() { foo; bar; }
bar
Run Code Online (Sandbox Code Playgroud)
编辑:测试的 bash 版本:GNU bash,版本 4.1.2(2)-release (x86_64-redhat-linux-gnu) GNU bash,版本 4.4.12(1)-release (x86_64-pc-linux-gnu)