溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

shell腳本中特殊字符的作用是什么

發(fā)布時間:2021-06-25 14:54:40 來源:億速云 閱讀:115 作者:Leah 欄目:開發(fā)技術(shù)

shell腳本中特殊字符的作用是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

1. #

注釋作用, #! 除外
此外, 在參數(shù)替換 echo ${PATH#*:} 這里不表示注釋, 數(shù)制轉(zhuǎn)換, 不表示注釋 echo $((2#101011))

2. ;

命令行分隔符, 可以在一行中寫多個命令. echo hello; echo there

3. ;;

終止 case 選項

代碼如下:


case “$variable” in
abc) echo “\$variable = abc”;;
xyz) echo “\$variable = xyz”;;
esac



4. .
隱藏文件前綴
.命令等價于source
. 表示當前目錄 .. 表示上一級目錄
正則表達式中作為單個字符匹配

5. “”, ‘'

雙引號, 單引號, 其中雙引號中可以引用變量, 而單引號中不行, 它們的作用是組織特殊字符

6. \

轉(zhuǎn)義字符

7. /

文件名分隔符, 除法操作
 

8. ` (Esc 下邊的按鈕)

后置引用, 命令替換

9. :

空命令, 等價于 “NOP”
也可被認為是 shell 內(nèi)建命令 true 作用相同, 例如: 死循環(huán)

代碼如下:


while :
do
  echo ”1”
done


等價于:

代碼如下:


while true
do
  echo “1”
done


在 if/then 語句中做占位符:

代碼如下:


if condition

then :  # 什么都不做, 引出分支

else

  do other thing

fi

在一個 2 元命令中提供一個占位符.

在和 >(重定向操作符)一起使用時, 清空文件, 并沒有修改文件的權(quán)限, 例如: (如果文件不存在, 將會創(chuàng)建文件)

: > data.log 等同于

cat /dev/null > data.log


10. !

取反操作符 != 不等于

11. *

萬能匹配符, 正則表達式中
數(shù)學(xué)乘法
** 冪運算

12. ?

測試操作
正則表達式中, ? 匹配任意單個字符

13. $

變量符號
正則表達式中 行結(jié)束符
${} 參數(shù)替換
$*,$@ 位置參數(shù)
$? 退出狀態(tài)
$$ 進程ID

14. ()

命令組, (a=hello; echo $a), 在 () 中的命令列表將作為一個子 shell 來運行. 在() 中的變量, 由于在子shell中, 所以對于腳本剩下的部分是不可用的.
數(shù)組初始化: array=(element1, element2, element3)

15. {xxx,yyy,zzz}

大括號擴展
cat {file1,file2,file3} > combined_file, 將file1,file2,file3合并在一起并重定向到commbined_file中. 大括號中不能有空格

16. {}

代碼塊. 事實上, 這個結(jié)構(gòu)創(chuàng)建了一個匿名的函數(shù). 但是與函數(shù)不同的是, 在其中聲明的變量, 對于腳本的其他部分的代碼來說還是可見的.

代碼如下:

# 代碼塊中的內(nèi)容, 外部訪問, 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
# 將一個代碼塊的結(jié)果保存到文件

 

17. {}\;

路徑名, 一般都是在 find 命令中使用, 注意; 用來結(jié)束find 命令序列的 –exec

18. []

test

數(shù)組元素, 例如 array[1]=abc
字符范圍, 在正則表達式中使用

19. [[]]

test 表達式本身放在[] 里
 

20. (())

數(shù)學(xué)計算擴展

21. >& >>& >> <

重定向
scriptname > filename 重定向腳本的輸出到文件中, 覆蓋原有內(nèi)容
command &> filename 重定向 stdout 和 stderr 到文件中
command >&2 重定向 stdout 和 stderr
scriptname >> filename 重定向腳本輸出到文件中, 添加到文件尾端, 如果沒有文件, 則創(chuàng)建這個文件.

22. << <<<

重定向, << 用在“here document”, <<< 用在“here string”


23. \<, \>

正則表達式中的單詞邊界 grep ‘\<the\>' testfile

24. |

管道, 分析前邊命令的輸出, 并將輸出作為后邊命令的輸入


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 循環(huán)的最后一個 done&

28. &&

邏輯與

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI