我有下面的脚本。当我在MacOs上运行iTerm中的每一行时,每个命令都有效。但是,如果我将其保存为shell脚本,它会说" !!命令未找到"。我试过#!/ bin / bash。但它仍然没有用。
#!/bin/sh
./ongoingShellScript.sh
if !! | grep "errors: 0"
then
echo Success
else
echo Failure
fi
我本可以做到
if ./ongoingShellScript.sh | grep "errors: 0"
但在这种情况下,proceedShellScript的输出不会实时打印。
我在这做什么? 提前谢谢
GV
答案 0 :(得分:2)
!!
没有引用先前的输出 - 它再次运行整个命令,因此生成 new 输出集。此外,它来自的功能集 - 称为"历史扩展" - 是在脚本执行期间默认关闭的交互式扩展。
如果您想在测试字符串的stdout时为用户打印状态,那么该作业的简单工具是grep
:
if ./ongoingShellScript.sh | tee /dev/stderr | grep -q "errors: 0"; then
echo "Success" >&2
else
echo "Failure" >&2
fi
...假设errors: 0
出现在输出的末尾,因此只要tee
看到此字符串,grep
就可以退出了{{1}}。