阅读文档并遵循这个答案,我想用一个简单的例子来测试一下:
测试_1.sh
#!/usr/bin/bash
let x=1/0
echo $x
测试_2.sh
#!/usr/bin/bash
printf "\nThis is 2\n"
但这两种控制流实现都失败:运行test_1,如果不成功,则运行test_2
# Just errors on line 1 of course
./test_1.sh
if [ $? -ne 0 ]; then
./test_2.sh
fi
也失败:
./test_1.sh || ./test_2.sh
关于控制多个脚本之间的流程有什么技巧吗?
答案1
根据您的评论:
我只是有一个这样的过程
test_1.sh
,可能会导致成功(返回代码 0),也可能导致失败(除 0 之外的任何内容)。我想要类似的东西test_2.sh
只在前一种情况下运行。
您想要与问题中的片段相反的内容。
./test_1.sh
if [ $? -ne 0 ]; then
./test_2.sh
fi
test_2.sh
如果指示失败则运行test_1.sh
,同样如此
./test_1.sh || ./test_2.sh
要运行test_2.sh
如果test_1.sh
表明成功,以下任何一个都可以工作:
./test_1.sh
if [ $? -eq 0 ]; then
./test_2.sh
fi
if ./test_1.sh; then
./test_2.sh
fi
./test_1.sh && ./test_2.sh
看shell 的控制和重定向运算符是什么?了解详情。
test_1.sh
尽管被零除,你的电流始终表明成功。看忽略或捕捉除以零了解详情。