Shell命令之“integer expression expected”的解決辦法__shell

來源:互聯網
上載者:User

       Shell指令碼裡,在用參數作比較的時候,如“ [ $temp -eq "iPhone" ]”,可能會出現如題的“ integer expression expected”錯誤。這是因為這幾個參數: -gt ,-lt,-eq 比較的都是數字和變數,因此變數temp如果是一個字串的話就會出現上述錯誤了。將原句改為“ [ $temp -eq iPhone ]” 結果也是一樣的。

       解決這個問題可以採取一種比較迂迴的辦法,即用awk工具對變數比較,返回比較的結果,再將比較的結果與相應的數字量進行比較。具體到上述例子,可以這樣處理:

[ `echo ${TEMP} | awk -v tem="iPhone" '{print($1>tem)? "1":"0"}'` -eq "0" ]

       完整版:

if [ `echo ${VAR} | awk -v tem="iPhone9,2" '{print($1>tem)? "1":"0"}'` -eq "0" ]then      echo iPhone 7 Pluselse     echo 不可識別的裝置fi
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.