我正在運行以下bash腳本,以便在它崩潰時重新啓動我的Perforce服務器,但是我想要做的就是讓bash腳本運行一個Python腳本來發送帶有退出的webhook該應用程序的代碼到我的Slack頻道。將bash值傳入Python
Python腳本允許你做類似python app.py 225
的工作,但它的工作原理是,但我想要將$?
傳遞到該腳本中,如python app.py $?
。
每當服務重新啓動回波行報告退出代碼正確(在它顯示225中的終端),但是當送入Python腳本$?
顯示爲0。
#!/bin/bash
until ~/Desktop/shell/p4d; do
echo "Perforce Server crashed with exit code $?. Respawning.." >&2
sleep 1
python ~/Desktop/shell/app.py $?
done
的Python腳本的代碼段,其獲取參數:
if __name__ == "__main__":
error = str(sys.argv[1])
print error
post_message(error)
我該怎麼做?
好,'$'將舉行'0'爲'睡眠1',據推測,退出,退出代碼'0' ... Bash很古怪; – zwer
'$?'在這個例子中是'sleep 1'的退出碼,而不是'p4d'。將它作爲一個變量存儲在直到循環內ftw –
開開口,這裏是一個[很好的回答](https://unix.stackexchange.com/a/99134)關於發生了什麼事情。 – zwer