close

工作上需要寫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 

arrow
arrow
    文章標籤
    run command run command variable
    全站熱搜

    吾給力 發表在 痞客邦 留言(0) 人氣()