發布時間:2024-01-24閱讀(14)
談一談Linux中Shell編程的轉義和引用
Shell中的兩類字符
(1)、普通字符:
Shell中除了本身的字面意思外沒有其他特殊意義。
(2)、元字符:
Shell的保留字符,在Shell中有著特殊意義的專用字符。
1、轉義
指使用轉義符引用單個字符,從而使其表達單純的字符的字面含義。
Shell中的轉義符是反斜杠"",使用轉義符的目的是使轉義符后面的字符單純地作為字符出現,而不解釋其特殊的含義。
案例1:
[root@localhost odysee]# name=odysee
[root@localhost odysee]# echo ${name}
odysee
[root@localhost odysee]# echo ${name}
${name}
解釋:
echo ${name}:
"$"作為一個特殊的字符,Shell解釋為"取出并打印name變量的值"。
案例2:
*:
一般作為的通配符使用。
例如:
查找odysee 的sh結尾的所有文件
find ~odysee/ -name "*.sh"

我現在需要它作為一個普通的*
例如:
echo 9*9 = 81
這里就作為一個普通的字符來使用

2、 引用
指字符串用某種符號括起來,以防止特殊字符被解析為其他意思。
Shell中的4種引用符
""[雙引號]:
又叫"部分引用"或"弱引用",可以引用出除$、``、之外的所有字符。
即:$、反引號(`)、轉義符()特殊字符依然會被解析為特殊意義。
[單引號]:
又叫"全引用"或"強引用",可以引用所有字符。
即:所有的特殊字符都不會被shell解釋。
``[反引號]:
將反引號括起來的內容解釋為系統命令。
也是命令替換的一種,將命令的標準輸出作為值賦給某個變量。
最后有補充。
[轉義符]:
轉義符引用單個字符,從而使其表達單純的字符的字面含義。
案例1:
測試雙引號
[root@localhost home]# num=9527
[root@localhost home]# echo "${num}"
9527
[root@localhost home]# echo "${num}"
${num}
[root@localhost home]# echo "`ls`"
odysee
stephen
userShell
比較簡單,就解釋一下echo "`ls`"
echo "`ls`":
""內的``依然表示特殊的含義,提取ls命令執行后的結果,然后在echo出來。

案例2:
測試單引號
[root@localhost home]# count=9527
[root@localhost home]# echo ${count}
${count}
[root@localhost home]# echo ${count}
${count}
單引號里面的所有的特殊字符都不會被shell解釋。

案例3:
測試反引號
[root@localhost home]# echo `ls ~/`
anaconda-ks.cfg Desktop Documents Downloads General Music original-ks.cfg Pictures Public Templates Videos
[root@localhost home]#
提取ls ~命令執行后的結果,然后在echo出來。

3、 命令替換
指將命令的標準輸出作為值賦給某個變量,Shell編程中使用比較頻繁。
例如:
count=`ls ~/`或者count=$(ls ~/)
將ls ~/執行的結果賦值給count變量。
命令替換的兩種方式:
(1)、反引號
(2)、$()
案例:
[root@localhost home]# count=`ls ~/`
[root@localhost home]# echo ${count}
anaconda-ks.cfg Desktop Documents Downloads General Music original-ks.cfg Pictures Public Templates Videos
[root@localhost home]# num=$(ls ~/)
[root@localhost home]# echo ${num}
anaconda-ks.cfg Desktop Documents Downloads General Music original-ks.cfg Pictures Public Templates Videos
[root@localhost home]#
這兩者執行的結果是相同的

測試完成。
歡迎大家給予寶貴的意見或者建議。
歡迎大家補充或者共享一些其他的方法。
感謝支持。
歡迎分享轉載→http://m.avcorse.com/read-213630.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖