標籤:linux shell
1. #注釋作用, #! 除外此外, 在參數替換 echo ${PATH#*:} 這裡不表示注釋, 數制轉換, 不表示注釋 echo $((2#101011))2. ;命令列分隔字元, 可以在一行中寫多個命令. echo hello; echo there3. ;;終止 case 選項複製代碼 代碼如下:
case “$variable” inabc) echo “\$variable = abc”;;xyz) echo “\$variable = xyz”;;esac4. .隱藏檔案首碼.命令等價於source. 表示目前的目錄 .. 表示上一級目錄Regex中作為單個字元匹配
5. “”, ‘‘雙引號, 單引號, 其中雙引號中可以引用變數, 而單引號中不行, 它們的作用是組織特殊字元6. \
逸出字元7. /檔案名稱分隔字元, 除法操作 8. ` (Esc 下邊的按鈕)
後置引用, 命令替換9. :
空命令, 等價於 “NOP”也可被認為是 shell 內建命令 true 作用相同10. !取反操作符 != 不等於11. *
萬能匹配符, Regex中數學乘法** 冪運算12. ?測試操作Regex中, ? 匹配任意單個字元13. $變數符號Regex中 行結束符${} 參數替換$*,[email protected] 位置參數$? 退出狀態$$ 進程ID14. ()命令組, (a=hello; echo $a), 在 () 中的命令列表將作為一個子 shell 來運行. 在() 中的變數, 由於在子shell中, 所以對於指令碼剩下的部分是停用.數組初始化: array=(element1, element2, element3)15. {xxx,yyy,zzz}
大括弧擴充cat {file1,file2,file3} > combined_file, 將file1,file2,file3合并在一起並重新導向到commbined_file中. 大括弧中不能有空格
16. {}代碼塊. 事實上, 這個結構建立了一個匿名的函數. 但是與函數不同的是, 在其中聲明的變數, 對於指令碼的其他部分的代碼來說還是可見的.複製代碼 代碼如下:# 代碼塊中的內容, 外部存取, I/O重新導向 1: #!/bin/bash 2: 3: File=/etc/fstab 4: 5: # 在這個代碼塊中的變數, 外部也可以訪問 6: { 7: read line1 8: read line2 9: } < $File 10: 11: echo "First line in $File is" 12: echo "$line1" 13: echo 14: echo "Second line in $File is" 15: echo "$line2" 16: 17: exit 0# 將一個代碼塊的結果儲存到檔案
17. {}\;
路徑名, 一般都是在 find 命令中使用, 注意; 用來結束find 命令序列的 –exec18. []test數組元素, 例如 array[1]=abc字元範圍, 在Regex中使用19. [[]]
test 運算式本身放在[] 裡 20. (())數學計算擴充21. >& >>& >> <重新導向scriptname > filename 重新導向指令碼的輸出到檔案中, 覆蓋原有內容command &> filename 重新導向 stdout 和 stderr 到檔案中command >&2 重新導向 stdout 和 stderrscriptname >> filename 重新導向指令碼輸出到檔案中, 添加到檔案尾端, 如果沒有檔案, 則建立這個檔案.22. << <<<
重新導向, << 用在“here document”, <<< 用在“here string”
23. \<, \>
Regex中的單詞邊界 grep ‘\<the\>‘ testfile24. |管道, 分析前邊命令的輸出, 並將輸出作為後邊命令的輸入
25. >|強制重新導向26. ||邏輯或27. &後台運行命令, 一個命令後邊跟一個&, 將表示在後台運行複製代碼 代碼如下:
1: #!/bin/bash 2: 3: for i in 1 2 3 4 5 6 7 8 9 10 4: do 5: echo -n "$i" 6: done&
注意, for 迴圈的最後一個 done&28. &&邏輯與
shell指令碼的特殊字元