Shell中的空格和引號


 
        

空格對於linux的shell是一種很典型的分隔符,所以給變量賦值的時候中間不能夠有空格。而單引號和雙引號,都是為了解決中間有空格的問題。比如string1=this is a string,這樣執行就會報錯。為了避免這個問題,因此就產生了單引號和雙引號。

單引號將剝奪其中的所有字符的特殊含義,阻止對所有字符的轉義, 將所有的字符看做其字面的意思。而雙引號會處理字符串中的'$'(參數替換),'``' or '()'(命令替換),'\' 轉義字符 和算數等。所以,兩者基本上沒有什么區別,除非在內容中遇到了參數替換符$和命令替換符`(我不是單引號)。

eg:

參數替換符$:

 

[~]$Name="eabbefh"

[~]$echo " Hello, $Name"

 Hello, eabbefh
[~]$Name="eabbefh"

[~]$echo 'Hello, $Name'

Hello, $Name

 命令替換符'$' or '``'(在美式鍵盤上,`是ESC下面的那個鍵):

echo$(ls)來說明整個替換過程:shell掃描一遍命令行,發現了$(cmd)結構,便將$(cmd)中的cmd執行一次,得到其標准輸出,再將此輸出放到原來命令echo $(ls)中的$(ls)位置,即替換了$(ls),再執行echo命令。如下:

[~/ltetools/doc]$ls
FAQ.mht*  LteBasebandTutorial.mht*  LteObservabilityTutorial.mht*
[~/ltetools/doc]$echo $(ls)
FAQ.mht LteBasebandTutorial.mht LteObservabilityTutorial.mht

 

NodeID=`egrep -i \(^RBS${NodeID}\)\|\(^${NodeID}\) ${IPLib} | gawk '{print $2}'` 
NodeID=$(egrep -i \(^RBS${NodeID}\)\|\(^${NodeID}\) ${IPLib} | gawk '{print $2}')

以上兩條命令效果相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM