簡體   English   中英

當 python 腳本失敗時,如何停止執行 bash 腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM