shell腳本中的各種括號

shell編程中的括號大致有五種,分別是 (), [], (()), [[]]{} 接下來簡單的介紹以下它們的用法:

  1. ()
  • 放置命令,格式$(cmd),如同`cmd` 。
    解釋器遇到這種格式,會先執行命令,得到結果再輸出。
  • 初始化數組 array=(1 2 3 4)
  1. (())
  • 算術運算 $((3*3+4*4))
  • 重定義
var=100
((var=101))
echo $var
  • 算術比較
((var==404)) && echo "not found" #如果var是404,輸出not found
  1. []
  • 條件判斷 , 可用test替代
var=404
if [ $var -eq 404 ] ##和下面一樣意思一樣
# if test $var -eq 404 
then
	echo "not found "
else
	echo "hi"
fi
  • 正則表達式的一部分
  • 數組
  1. [[]]
    條件判斷,那和[] test 有什麼區別呢?
  • &&、||、< 和 > 只能在[[]]中正常使用,如果放到[]中會報錯。
  • [[]] 支持算術擴展
  • [[]] 支持字符串模式匹配,[]不支持。
var="nice"
if [[ $var == nic? ]]
then
	echo "nice " #輸出nice
else
	echo "hi"
fi

if [[ 1+2 -eq 3 ]]
then
	echo "yes" #輸出yes
else
	echo "no"
fi

所以判斷條件,儘量用[[]],而不是[]

  1. {}
  • 代碼塊,和()是由區別的
    • {}中不會開新進程,()會開,所有腳本里的變量在()是用不了的,但{}可以
    • 格式問題,{ cmd;cmd;} (cmd;cmd) ,{}左邊必須空格開頭,並且cmd後面必須加;

其餘的就是和字符串相關的操作
字符串的替換和截斷

${var:-string},${var:+string},${var:=string},${var:?string}  
${var%pattern},${var%%pattern},${var#pattern},${var##pattern}  
${var:num},${var:num1:num2}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章