用run.sh文件运行我的项目管道,它将产生成功的输出。但是如果它不起作用,我应该用相同的命令重新启动管道。
相反,我给予了要传入www.example.com文件的参数run.sh,该参数不是从失败的步骤开始的。
echo "Usage : file.sh step"
if [ "$step" = "" ]; then
python -u -m utils.py
python -u -m apple.py
python -u -m banana.py
python -u -m cat.py
python -u -m dog.py
elif [ "$step" = "apple" ]; then
python -u -m apple.py
python -u -m banana.py
python -u -m cat.py
python -u -m dog.py
elif [ "$step" = "banana" ]; then
python -u -m banana.py
python -u -m cat.py
python -u -m dog.py
elif [ "$step" = "cat" ]; then
python -u -m cat.py
python -u -m dog.py
elif [ "$step" = "dog" ]; then
python -u -m dog.py
else
echo "Issue"
fi
命令执行上面的代码:run.sh
例如:run.sh“香蕉”
1条答案
按热度按时间pokxtpni1#
通常,在匹配单个字符串时(比如
"$step"
),你应该使用case
而不是一系列if
...elif
...语句。因为在bashv4.0和更高版本中,您可以在子句之间使用;&
来表示“也执行下一个子句(无论其模式是否匹配)"。类似于以下内容:因此,例如,如果
"$step"
是“apple”,它将执行apple
案例,然后执行将通过banana
、cat
和dog
案例。dog
和*
案例之间的;;
意味着它 * 不会 * 进入最终案例,并且最后的*
将匹配任何内容(与前面的case不匹配的内容),因此它实际上像else
子句一样工作。