linux shell中用&&代替if

來源:互聯網
上載者:User

在看別人寫的linux shell代碼時,忽然發現好多類似下面格式的代碼:

[ "$PRO" = "1" ] && ckssl="--ssl "[ -n "$IP" ] && ckip="-H $IP "[ -n "$PORT" ] && ckport="-p $PORT "

一開始怎麼也沒搞明白為什麼要這麼寫

只是知道[]是和test等價的

請教了一位前輩,才恍然大悟,竟然忽略了&&的執行原理

對於&&(與運算子),從左往右執行的話,只有左側的執行結果為真時,才會執行右側的運算式,否則右側運算式不會執行

這樣的格式可以巧妙的代替if語句,簡化代碼。

同樣的目的如果用if實現的話:

if [ "$PRO" = "1" ]; then        ckssl="--ssl "fi;

需要三行代碼,實際上兩種方式的執行效率應該是一樣的,這和c語言裡的右移一位的操作比*2操作高效的例子不一樣。

這裡都需要執行[]裡面的運算式,然後判斷運算式的結果值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.