【发布时间】:2021-08-13 23:55:29
【问题描述】:
这是 .sh 脚本的示例:
#!/bin/sh
........
if [ "$(tail -n 1 log_file.txt)" = *"FAIL"* ]; then
exit 1
else
# some command here
exit 0
fi
它必须匹配某个文件的最后一行,模式为“FAIL”,如果匹配结果为真,则返回退出代码 1,否则返回 0。
在这种情况下,脚本总是以退出代码 0 终止,即使对于那些不包含 FAIL 子字符串的字符串也是如此。 请帮我修复 if 语句。
附: shebang 必须是 #!/bin/sh 而不是 #!/bin/bash
【问题讨论】:
-
我认为 sh 测试不会与 = 进行通配符匹配,只是直接相等。
-
即使是 bash
[也没有;它是[[-only 语法,因此仅在具有 ksh 启发功能的 shell 中可用。
标签: shell if-statement