Linux中Shell腳本的符號說明
#!腳步中的第一句,指明執行腳本使用的程序
示例:#!/bin/bash
# 注釋,用於幫助信息或者忽略暫時不執行的語句
示例:# echo “hello”
# this is a comment
$ 變量替換符號
示例:a=123;echo $a
${} 變量正規表達式,避免變量名提前截斷
示例:${13}
$num 位置參數
示例:$0,$1,…,${10}
$? 最後一個命令的推出狀態,一般0表示正確,其他表示錯誤
示例: if [ $?-ne 0 ]; then
echo “encounter error”
fi
$! 最後一個命令執行的後台命令的ID
示例:pid=$!
$$ 運行腳本進程的ID
示例:pid=$$
$* 傳遞到腳步的參數,加雙引號時相當於”$1$2 …”
示例:echo “Theparameters are $*”
$@ 與$*相同,加雙引號相當於”$1”“$2” …
示例:a=$@
$# 傳遞到腳本中的參數個數,不包含$0參數
示例: echo “theparameter number is $#”
$- 保存當前shell的設置信息,如果結果中有i,則表示為交互式shell
示例: echo $-
; 將多個指令寫在同一行上的分隔符
示例:a=123;echo $a
;; 專用語case選項,作用類似於C語言switch語句中的break
示例: case${tao} in
a) echo “a” ;;
b) echo “b” ;;
esac
. 一個表示當前目錄,兩個表示上一級目錄
示例:cd ..
, 類似於C語言中的逗號表達式
示例:let “t1=((a=5+3,b=7-1,c=15/3))”;echo $t1
! 表示邏輯運算法“非”
示例:if [ “$?”!= “0” ]; then
echo “Execute error”
exit 1
fi
: 在bash中,這是一個內建命令,“什麼都不干“,但是返回狀態值為0
示例: :; echo$?; :> f.out 相當於cat/dev/null > f.out
? 通配符,匹配任意一個字符,但是不包括null
示例:ls f?n
‘’ 將其內容當作字符串,$和通配符均不擴展或者轉義
示例:a=1; echo ‘$a’ 結果為$a
“” 將其內容作為字符串,但是$可以擴展,通配符不可以
示例:b=”string”;echo “$b” 結果為string
`` 反引號(在鍵盤數字1左邊),其中的字符串會當成命令執行
示例:a=`date`;echo “$a”
() 指令群組,將一串指令括起來,執行時shell會產生subshell來執行它們
示例:(a=1;echo$a)
(()) bash的內建功能,用於算數運算
示例:a=10;echo$a;((a++)); echo $a
[] 同test作用相同,用於表達式真假的判斷
示例: if [ 1-eq 2];then
echo‘kill me’
fi
[[]] bash對[]的加強版,當中允許使用||和&&,並且可以使用正則表達式
示例:read ver
if [[ $ver > 5 && $ $ver
echo“that’s it”
fi
{} 指令群組,類似於(),但在當前shell中執行,還可以用於字符串的組合
示例: mkdir{userA, userB, userC} - {home, bin, data}
\ 正則表達式,匹配單詞的詞首和詞尾
示例: find ‘\’file
+ 加法,正則表達式中表示字符重復1~n次
示例: grep ‘10\+9’file
- 減法,標准輸入,cd命令中表示上一次的工作目錄
示例: expr 1 -2 + 3; tar -zxfv -; cd –
* 乘法,通配符,表示任何字符;一個字符重復0~n次
示例:let “var=2*3”; ls zha*t; grep ‘a1[0-9]*’
** 次方運算
示例:let “var=2**8”
/ 除法;目錄分隔符
示例:expr 10/2;cd /home/zc
% 取余
示例:expr 10 %2
= 賦值;字符串比較,在[]和[[]]中不同(參見==)
示例: a=”we”;if [ $a == ‘wee’ ]; then exit0 fi
== 字符串比較,同單個等號
示例: a=’we’
if[[ $a == w* ]]; then
echo“ok”
fi
!= 字符串比較,不等於
示例: if [ “$a”!= “$b” ]; then …
示例: cat>test
示例: 110
> 輸出重定向,文件存在覆蓋,不存在則新建
示例: ls>out 2>&1
>> 輸出重定向,文件存在追加,不存在則創建
示例: ls>>out
& 後台執行工作符
示例: tar zcvfdata.tar.gz data >/dev/null &
&& 邏輯與,短路操作符
示例: cp 1.txt2.txt && rm 1.txt && echo ‘success’
| 管道操作符
示例: cat file| grep ‘fan’
|| 邏輯或,短路操作符
示例: rm 1.txt|| echo ‘fail’
~ 根目錄
示例: cd ~
^ 正則表達式中匹配行的開頭
示例: grep ‘^home’file
\ 轉義字符,續行符號
示例: echo “\$A=$A\
This is the first line”;