歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell一些技巧和知識點

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 ]   
Copyright © Linux教程網 All Rights Reserved