Bash 有三種 quoting mechanisms
1. 跳脫字元 Escape Character ( \ )
因為有些字元有特殊意義,如果要保留字元字面上的意義,可以在字元前加上跳脫字元。
在雙引號的字串中表示 ( " ) ( ` ) ( \ )
範例:
#!/bin/sh
echo "\""
echo "\`"
echo "\\"
結果:
"
`
\
特例:
如果在跳脫字元後接的是換行字元 (newline),則有連接行的意思
範例:
#!/bin/sh
echo "If you want to print a long message, you can use '\\newline' \
as a line continuation"
結果:
If you want to print a long message, you can use '\newline' as a line continuation
注意:
範例中紅色的跳脫字元加上換行,連接了下面一行
2. 單引號 Single Quotes ( ' )
被兩個單引號包起來的特殊字元不會被解釋為特殊意義,所以不需要加上跳脫字元
範例:
#!/bin/sh
echo ' " ` \ '
結果:
" ` \
特例:
單引號無法被放在兩個單引號中間,就算用跳脫字元也一樣不行,因為跳脫字元在兩個單引號中不會被解釋為跳脫字元的意義
範例:
#!/bin/sh
echo ' \' '
結果:
./test.sh: line 3: unexpected EOF while looking for matching `''
./test.sh: line 4: syntax error: unexpected end of file
3. 雙引號 Double Quotes ( " )
在兩個雙引號中的特殊字元會有特殊意義,所以如果想要保留特殊字元字面的意義,
可以在前面加上跳脫字元,因為此時跳脫字元會被解釋為跳脫字元的意義
範例;
#!/bin/sh
value=100
echo "$value `date`"
echo "\` \" \\ \A \a"
結果:
100 Mon Nov 6 22:20:02 CST 2017
` " \ \A \a
注意:
如果跳脫字元後不是特殊字元,則跳脫字元會失去其特殊意義,被當作字元被印出,如範例中的 \A 與 \a
沒有留言:
張貼留言