Linux Shell中各種分號和括號的用法總結

1.Shell中變量的原形:${var}
大家常見的變量形式都是$var

2.命令替換$(cmd)
命令替換$(cmd)和符號`cmd`(注意這不是單引號,在美式鍵盤上,`是ESC下面的那個鍵)有相同之處

3.一串的命令執行()和{}
()和{}都是對一串的命令進行執行,但有所區別:
A,()只是對一串命令重新開一個子shell進行執行
B,{}對一串命令在當前shell執行
C,()和{}都是把一串的命令放在括號裏面,並且命令之間用;號隔開
D,()最後一個命令可以不用分號
E,{}最後一個命令要用分號
F,{}的第一個命令和左括號之間必須要有一個空格
G,()裏的各命令不必和括號有空格
H,()和{}中括號裏面的某個命令的重定向隻影響該命令,但括號外的重定向則影響到括號裏的所有命令

$var=test
$(var=notest; echo $var)        ###變量var值爲notest,此是在子shell中有效
notest
$echo $var                      ###父shell中值仍爲test
test

${ var=notest; echo $var;}      ###注意左括號和var之間要有一個空格
notest
$echo $var                      ###父shell中的var變量的值變爲了notest
notest

${ var1=test1;var2=test2;echo $var1>a;echo $var2;}  ###輸出test1被重定向到文件a中,
test2                                               ###而test2輸出則仍輸出到標準輸出中。
$cat a
test1

${ var1=test1;var2=test2;echo $var1;echo $var2;}>a  ###括號內命令的標準輸出全部被重定向到文件a中
$cat a
test1
test2

4,幾種特殊的替換結構:${var:-string},${var:+string},${var:=string},${var:?string}

5.POSIX標準的擴展計算:$((exp))

linux shell “(())” 雙括號運算符使用
這種計算是符合C語言的運算符,也就是說只要符合C的運算符都可用在$((exp)),甚至是三目運算符和for語句。
注意:這種擴展計算是整數型的計算,不支持浮點型.若是邏輯判斷,表達式exp爲真則爲1,假則爲0。

6.四種模式匹配替換結構:${var%pattern},${var%%pattern},${var#pattern},${var##pattern}
這四種結構的意義是:
${var%pattern}和${var%%pattern}表示從最右邊(即結尾)匹配的,${var#pattern} 和${var##pattern}從最左邊(即開頭)匹配的。其中${var%pattern}和${var#pattern}是最短匹配,${var%%pattern}和${var##pattern}是最長匹配。只有在pattern中使用了通配符纔能有最長最短的匹配,否則沒有最長最短匹配之分。

7.[ 和 [[

test、[]、[[]]用法說明
$ type [ [[ test
[ is a shell builtin
[[ is a shell keyword
test is a shell builtin 

=======================================================================================================

各種引號的用法總結如下:
1、 單引號 ‘
由單引號括起來的字符都作爲普通字符出現。特殊字符用單引號括起來以後,也會失去原有意義,而只作爲普通字符解釋。

2、 雙引號 “
由雙引號括起來的字符,除$、\、’、和”這幾個字符仍是特殊字符並保留其特殊功能外,其餘字符仍作爲普通字符對待。對於$來說,就是用其後指定的變量的值來 代替這個變量和$;對於而言,是轉義字符,它告訴shell不要對其後面的那個字符進行特殊處理,只當作普通字符即可。可以想見,在雙引號中需要在前面加 上的只有四個字符$,,’和”本身。而對”號,若其前面沒有加,則Shell會將它同前一個”號匹配。

3、 反引號 `
反引號(`)這個字符所對應的鍵一般位於鍵盤的左上角,不要將其同單引號(’)混淆。反引號括起來的字符串被shell解釋爲命令行,在執行時,shell首先執行該命令行,並以它的標準輸出結果取代整個反引號(包括兩個反引號)部分。

發佈了21 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章