linux-shell-||,&&{},(),reg-命令執行順序
&&
格式:命令1 && 命令2
作用:& &左邊的命令(命令1)返回真(即返回0,成功被執行)後,& &右邊的命令(命令2)才能夠被執行。
例:
$ mv /apps/bin /apps/dev/bin && rm -r /apps/bin
說明:/apps/bin目錄將會被移到/apps/dev/bin目錄下,如果它沒有被成功執行,就不會刪除/apps/bin目錄。
||
格式:命令1 || 命令2
作用:如果| |左邊的命令(命令1)未執行成功,那麼就執行| |右邊的命令(命令2)
例:如果該指令碼未執行成功,該s h e l l將結束。
$ comet month_end.txt || exit
用()和{ }將命令結合在一起
多個命令一起執行方法:
1)當前shell中執行一組命令,可以用命令分隔字元隔開每一個命令,並把所有的命令用圓括弧()括起來。
格式:
(命令1;命令2;. . .)
2)子Shell執行,把()換為{}
格式:{命令1;命令2;. . . }
注意:只有在{ }中所有命令的輸出作為一個整體被重新導向時,其中的命令才被放到子shell中執行,否則在當前s h e l l執行
綜合
這些命令都是綜合來用的。
例:
$comet month_end || (echo "Hello ,Comet did not work " | mail myself; exit)
如果該指令碼執行失敗了,先給自己發個郵件,然後再退出.
(),{}
(cmd1;cmd2;...;cmdN)# 在一個子shell裡執行一組命令
{cmd1;cmd2;...;cmdN}# 在當前shell裡執行一組命令
正則
^ 只只匹配行首
$ 只只匹配行尾
* 只一個單字元後緊跟*,匹配0個或多個此單字元
[ ] 只匹配[ ]內字元。可以是一個單字元,也可以是字元序列。可以使用-表示[ ]內字元序列範圍,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ]
\ 只用來屏蔽一個元字元的特殊含義。因為有時在s h e l l中一些元字元有特殊含義。\可以使其失去應有意義
. 只匹配任意單字元
pattern \ { n \ } 只用來匹配前面pattern出現次數。n為次數
pattern \ { n,\ } m 只含義同上,但次數最少為n
pattern \ { n,m \ } 只含義同上,但pattern出現次數在n與m之間