我在bash腳本中執行一些API調用。在這種情況下,如果API調用成功,則返回json
文件,如果失敗,則返回stderr
。我想捕獲stderr
並解決它在一個失敗。因此,在回顧了很多答案之後,我發現迄今爲止沒有任何組合可行。如果在執行腳本時出錯,如何將stderr捕獲到變量中?
舉例來說,我已經添加下面的規則,所以當我運行:
myCmd=("aws --profile myProfile --region eu-west-1 ec2 authorize-security-group-ingress --group-id sg-999aa999 --protocol tcp --port 80 --cidr 0.0.0.0/0 ")
${myCmd[@]} > myJson.file
#check if success
if [ "$?" -ne "0" ]
then
# PARSE STDERR
fi
成功檢查返回255和標準錯誤下面返回。所以現在我想解析消息來檢查它是否是一個一般性錯誤或重複:
客戶端錯誤(InvalidPermission.Duplicate)調用 AuthorizeSecurityGroupIngress操作時發生:指定的規則「同行: 0.0.0.0/0,TCP,距離Port:80端口:80,允許」已經存在
要捕獲stderr,您應該使用'$ {myCmd [@]}> myJson.file 2> myJson.err'並在'then'子句的主體中使用'myJson.err'。 – Jdamian 2014-12-03 08:37:57