歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell一些技巧和知識點

shell一些技巧和知識點

日期:2017/3/1 16:36:25   编辑: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