引號
- /home/l/g/tomotoboy > echo "*"
- *
- /home/l/g/tomotoboy >echo '*'
- *
- /home/l/g/tomotoboy > echo \*
- *
/home/l/g/tomotoboy > echo "*"
*
/home/l/g/tomotoboy >echo '*'
*
/home/l/g/tomotoboy > echo \*
*
雙引號
使用雙引號可引用除字符$、`、\外的任意字符或字符串。這些特殊字符分別為美元符號,反引號和反斜線,對shell來說,它們有特殊意義。如果使用雙引號將字符串賦給變量并反饋它,實際上與直接反饋變量并無差別。
- *
- /home/l/g/tomotoboy >F="HELLO"
- /home/l/g/tomotoboy >echo "$F"
- HELLO
- /home/l/g/tomotoboy >echo $F
- HELLO
-
- /home/l/g/tomotoboy >F="hello, china,^ &"
- /home/l/g/tomotoboy >echo $F
- hello, china,^ &
-
- /home/l/g/tomotoboy >echo "The $F "
- The hello, china,^ &
*
/home/l/g/tomotoboy >F="HELLO"
/home/l/g/tomotoboy >echo "$F"
HELLO
/home/l/g/tomotoboy >echo $F
HELLO
/home/l/g/tomotoboy >F="hello, china,^ &"
/home/l/g/tomotoboy >echo $F
hello, china,^ &
/home/l/g/tomotoboy >echo "The $F "
The hello, china,^ &
單引號
單引號與雙引號類似,不同的是shell會忽略任何引用值。換句話說,如果屏蔽了其特殊含義,會將引號里的所有字符,包括引號都作為一個字符串。使用上一個例子,結果如下:
- /home/l/g/tomotoboy >echo "The '$GIRL' did well"
- The 'girl' did well
- /home/l/g/tomotoboy >echo 'The '$GIRL' did well'
- The girl did well
- /home/l/g/tomotoboy >echo 'The $GIRL did well'
- The $GIRL did well
/home/l/g/tomotoboy >echo "The '$GIRL' did well"
The 'girl' did well
/home/l/g/tomotoboy >echo 'The '$GIRL' did well'
The girl did well
/home/l/g/tomotoboy >echo 'The $GIRL did well'
The $GIRL did well
反引號
反引號用于設置系統命令的輸出到變量。shell將反引號中的內容作為一個系統命令,并執行其內容。使用這種方法可以替換輸出為一個變量。反引號可以與引號結合使用。下面將舉例說明。
- /home/l/g/tomotoboy >echo `who| wc -l`
- 13
- /home/l/g/tomotoboy >echo `date`
- Tue Aug 4 15:08:47 CST 2009
/home/l/g/tomotoboy >echo `who| wc -l`
13
/home/l/g/tomotoboy >echo `date`
Tue Aug 4 15:08:47 CST 2009
反斜線
如果下一個字符有特殊含義,反斜線防止 shell誤解其含義,即屏蔽其特殊含義。下述字符包含有特殊意義:& * + ^ $ ` " | ?。假定echo命令加*,意即以串行順序打印當前整個目錄列表,而不是一個星號 *。
- /home/l/g/tomotoboy >echo \*
- *
- /home/l/g/tomotoboy >echo $$
- 26421
- /home/l/g/tomotoboy >echo $!
-
- /home/l/g/tomotoboy >echo $#
- 0
- /home/l/g/tomotoboy >echo \$$
- $$
-
- /home/l/g/tomotoboy >echo 12*12
- 12*12
- /home/l/g/tomotoboy >echo 12 * 12
- 12 a.out append.sed change.sed core.log diary.txt echo factorial factorial.c greeting.sh grepgrepstrings grepstr hdisk.txt hello hello.cpp main main.c nohup.out oops.txt plane.txt readme.sh seawolf sed.out sed.txt sort.txt stat.tmp test test.sh user. online 12
/home/l/g/tomotoboy >echo \*
*
/home/l/g/tomotoboy >echo $$
26421
/home/l/g/tomotoboy >echo $!
/home/l/g/tomotoboy >echo $#
0
/home/l/g/tomotoboy >echo \$$
$$
/home/l/g/tomotoboy >echo 12*12
12*12
/home/l/g/tomotoboy >echo 12 * 12
12 a.out append.sed change.sed core.log diary.txt echo factorial factorial.c greeting.sh grepgrepstrings grepstr hdisk.txt hello hello.cpp main main.c nohup.out oops.txt plane.txt readme.sh seawolf sed.out sed.txt sort.txt stat.tmp test test.sh user. online 12
使用命令expr時,用*表示乘法會出現錯誤,在*前加上反斜線才會正確。
- /home/l/g/tomotoboy >expr 12 * 12
- expr: syntax error
- /home/l/g/tomotoboy >expr 12 \* 12
- 144
/home/l/g/tomotoboy >expr 12 * 12
expr: syntax error
/home/l/g/tomotoboy >expr 12 \* 12
144
在echo命令中加入元字符,必須用反斜線起屏蔽作用。下面的例子要顯示價格 $129。其
中$屏蔽與不屏蔽將產生不同的結果。
- /home/l/g/tomotoboy >echo $129
- 29
- /home/l/g/tomotoboy >echo \$129
- $129
/home/l/g/tomotoboy >echo $129
29
/home/l/g/tomotoboy >echo \$129
$129