工作上需要寫script 應付 短期/客製化 的驗證
由於需要簡單快速 撰寫一個script來跑東西
雖然部門內有Automation Team,但照流程走的話
,提需求給Automation Team,等他們開發出來
,也來不及趕上測試進度
所以就自己寫個shell script來跑比較省時省事
但想法太美好了,一直卡關
由於Tool Yafuflash需要一個 echo Y去回應
又不想讓整個script變得很難維護,土法煉鋼的方式:
RunCMD="echo Y | ./Yafuflash -nw -ip $IPv4BMC -U $BMCUser -U $BMCPW -bu -f -fb -ieo jabil_bmc_a10020-2.08.ima_enc"
echo "Run command to update FW: $RunCMD" && $RunCMD
但問題來了... 由於變數裡面存了開頭是echo的內容
$RunCMD執行的時候,實際上會變成echo "Y | ./Yafuflash -nw -ip $IPv4BMC -U $BMCUser -U $BMCPW -bu -f -fb -ieo jabil_bmc_a10020-2.08.ima_enc"
"Y | ./Yafuflash -nw -ip $IPv4BMC -U $BMCUser -U $BMCPW -bu -f -fb -ieo jabil_bmc_a10020-2.08.ima_enc" 這部分被當作是文字Output 了...
一時間也想不出避開Y後面整串被當成文字訊息輸出的方法
只好把字串內容傳到一個暫存/臨時用的執行檔
再直接執行這個執行檔,去避開echo這個狀況嚕
RunCMD="echo Y | ./Yafuflash -nw -ip $IPv4BMC -U $BMCUser -P $BMCPW -bu -f -fb -ieo $BMCFile1"
echo "$RunCMD" > RunCMD.sh && echo "rsp=\`echo \$?\`" >> RunCMD.sh && echo "exit \$rsp" >> RunCMD.sh && chmod 777 RunCMD.sh
echo "Run command to update FW: $RunCMD" ; ./RunCMD.sh ;YafuExecuteReturnCode=$? && echo "Yafuflash execution return code:"$YafuExecuteReturnCode && rm -f RunCMD.sh
後來查到可以使用eval這個指令去執行
echo "The value of the \$RunCMD: " $RunCMD
echo "Use eval to run \$RunCMD:"
eval $RunCMD 2>&1