shell一些技巧和知識點

來源:互聯網
上載者:User

shell一些技巧和知識點 ; 表示的是一個命令執行完, 忽略其傳回值, 繼續執行下一行   www.2cto.com  && 表示只有前面為true才繼續執行後面的命令, 否則忽略, 可以理解為短路執行  || 表示子前面為false才繼續執行後面的命令, 這個比以前看到的解釋更容易理解  凡是要輸出字串的, 最好用引號括起來, 否則容易被shell理解為命令, 這一點很容易疏忽  {}是一種命令塊的寫法  :可以看成append操作   www.2cto.com  export用來將一個變數升級為環境變數  str= 這行代碼錶示將str這個變數設定為null  ${str:-+=expr} 這些操作忘記了, 還需要鞏固一下  source會將script看成當前shell進程的一部分, 而不是產生一個sub shell進程來執行指令碼, source用來載入公用的函數, 可以理解為import  exec用來結束當前shell進程, 並重建一個新的進程來執行指令碼  ()用來將多個命令放到一個sub shell進程中去執行, 可以理解為將運算式變成函數  {} 理解成匿名函數吧, 一般在awk中常見  $()和``是一回事, 不過前者辨識度更高, 建議常用, 後者容易與''混淆, 另外一個前者嵌套起來更簡單, 不過前者移植性較差  ${}除了用來界定變數之外, 還有一個功能實現字串變數的substring操作, #表示去掉左邊的, %表示去掉右邊的, 單數表示最小匹配, 雙數表示最大匹配, 可以通過鍵盤上#和%相對於$的位置來記憶, linux上的命令參數大部分記憶起來很傷腦筋:(  ${}還可以用來設定預設值, 這塊更複雜, 不記也罷  ${#str}用來計算變數的字元長度  ()的另一個作用是用來定義一個數組, 而針對數組的訪問則利用的是[], 注意數組的下標base是0, 另外@用來表示全部, 可以理解為all  $(())只針對算數和邏輯運算, 裡面的變數可以不用帶上$首碼, 當然帶上也不為錯  shell中的0表示true, 非零表示false  (())用來直接進行運算, 會讓我們的代碼更簡潔, 比如變數不用加$首碼  $0表示的是指令碼路徑, $1...n代表的是指令碼路徑之後的參數  函數可以理解為指令碼中的指令碼, 不過函數中$0表示的仍然是指令碼路徑, 而不是函數名  $10不是表示第十個參數而是第一個參數後面帶一個0  一般#跟數量關係比較大, 比如${#str}表示變數長度, 而$#表示參數個數, 測試是否有傳參數 [ $# = 0 ]  

聯繫我們

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