我有一个非常简单的问题,如标题中所述。我在网上搜索了一下,发现答案对我来说并不容易。最小的例子是,我有一个python脚本python_script.py:
#!/us/bin/python
import sys
number = int(sys.argv[1])
if number <= 10:
pass
else:
raise ValueError('Number is higher than 10!')
sys.exit(1)
然后我有一个bash脚本bash_script.sh,调用python脚本。
#!/bin/bash
for num in {1..100}
do
python python_script.py ${num}
done
我试图做的是:在python脚本中引发异常后,我希望bash脚本立即停止(即,在此示例中,当num> 10时)。但是现在使用这两个脚本,所有从1到100的num循环都在bash脚本中执行,但只有在10之后才会在屏幕上打印异常。我想这应该很容易,所以提前感谢您的帮助。
答案 0 :(得分:5)
您可以测试python
脚本的退出状态,如果非{0},则退出bash
脚本。最简单的方法是
#!/bin/bash
for num in {1..100}
do
python python_script.py ${num} || exit
done
但您也可以使用if
声明:
for num in {1..100}
do
if ! python python_script.py ${num}; then
echo "An error occurred"
exit
fi
done