shell腳本中單雙引號疑惑


工作中常用到shell腳本,遇到了一個疑惑,求解。

    常見的解釋:

  單引號字符串的限制:

  • 單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
  • 單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符后也不行),但可成對出現,作為字符串拼接使用。

  雙引號的優點:

  • 雙引號里可以有變量
  • 雙引號里可以出現轉義字符

    我的問題如圖一:在vim編輯器中,第21行,在使用單引號的情況下,'$i' 是打印出了數值,不是上面解釋的單引號里面的變量是無效的,打印出$i。

          圖一

     與之類似的腳本,用雙引號表示: 第18行

   6~9四行是str.txt內容(為了觀看方便,copy到一起顯示)

   

                圖二、輸出腳本

  雙引號、單引號、沒有引號結果如下圖:紅圈圈起來的部分。結果是:

    雙引號括起來的變量,原樣輸出了圖二中的第九行,* 在雙引號中不起作用了
    單引號確實是任何字符都會原樣輸出,輸出了$word

    沒有引號,圖二中第九行中首字母  *  起作用,輸出了這個目錄下的內容。

  

 

疑惑1:在圖一中,單引號中的變量應該無效的但是結果確打印出了值,在圖二中就是無效的了,這里是否是因為圖一中的單引號用在了awk命令行中。

疑惑2:在圖二中,雙引號輸出和沒有引號輸出結果,雙引號在執行  "$word"  后,打印出 *  17 Procedure Status *  ,echo執行時,不是先碰到 * 符號,首先執行嗎?為什么這里沒有執行呢?不是說雙引號中的 可以有變量的嗎 ?  這里有一個問題就是 * 符號,在這里解釋為是否屬於變量將。

  任務完成了,但是這個疑惑,就像跟刺一樣扎在心里不舒服,求解。

 


免責聲明!

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



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