[英]How do I go from a bash script that calls a python script to a python script calling a bash script?
[英]How do i halt execution of bash script when a python script fails?
所以我的 shell 腳本中有以下內容:
python get_link.py $password | wget --content-disposition -i-
mkdir web_folder
mv *.zip web_folder
所以第一行是執行我編寫的 python 腳本,它打印出一個網站鏈接,然后wget 立即檢索 python 腳本返回的鏈接並下載 zip 文件。
第二行創建一個名為“web_folder”的新文件夾,第三行將 wget 下載的 zip 文件移動到“web_folder”中
我面臨的問題是,如果 python 腳本由於 $password 密碼錯誤等錯誤而失敗,則 shell 腳本命令的 rest 仍在執行。 在我的情況下,打印以下內容:
mv: cannot stat ‘*.zip’: No such file or directory
即使 python 腳本失敗,mkdir 和 mv 命令仍然會執行。 當 python 腳本失敗時,如何確保腳本完全停止?
如果您使用的是 bash,請查看 PIPESTATUS 變量。 ${PIPESTATUS[0]} 將具有來自第一個 pipe 的返回碼。
#!/bin/bash
python get_link.py $password | wget --content-disposition -i-
if [ ${PIPESTATUS[0]} -eq 0 ]
then
echo "python get_link.py successful code here"
else
echo "python get_link.py failed code here"
fi
一個緊湊的解決方案,用 and 鏈接一切:
(python get_link.py $password | wget --content-disposition -i-) && (mkdir web_folder) && (mv *.zip web_folder)
不太緊湊的解決方案:
python get_link.py $password | wget --content-disposition -i-
if [ $? -eq 0 ]; then
mkdir web_folder
mv *.zip web_folder
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.