Linux 中的 Bash 指令碼支援對變數的操作,下面鹹魚將介紹 Linux Bash Shell 中關於變數的 5 個易錯點
因為程式設計習慣,這類現象往往發生在大多數使用過其他流行程式語言的程式設計師身上
對於許多程式語言(例如 Python),變數賦值的時候在等號兩邊新增空格是一個好的習慣
看過鹹魚的 Python 文章的小夥伴們都不難發現鹹魚的 Python 程式碼中等號兩邊通常都是有空格的
但如果在編寫 Bash shell 的時候,把這個習慣帶進去就不好了
你會發現 Bash 將 name 當成了命令而不是變數,就是因為我們在等號兩邊新增了空格
正確的做法應該是不要新增空格
在 Bash Shell 中,等號兩邊不需要空格,這是 shell 的語法
在 Bash Shell 中定義一個陣列應該如下所示:
但是 Python 寫多了有時候就會容易犯下面的錯誤:定義陣列的時候使用了逗號作為分隔符
但是這樣我們輸出來看下
可以看到 Bash 不會將逗號視為分隔符,並且在 names
陣列中只有一個元素 kanye,Edison,fish
而不是預期的三個
在 Bash Shell 中,定義陣列用空格作為分隔符而非逗號或其他符號
當我們在 Bash 中宣告一個變數時,關於引號的使用有 3 個方案:
單引號
雙引號
沒有引號
預設情況下,Bash 中的每個值都是一個字串,使用變數的時候可以不需要使用引號
但當你需要使用引號的時候(有可能為了閱讀體驗),請注意單引號和雙引號的區別
然後分別輸出 str1、str2,看下之間的區別
可以看到:
單引號內的字串會被解釋成它本身,忽略了特殊字元和命令
雙引號內可以包含特殊字元,不會忽略特殊字元,如果要忽略,可以使用跳脫符\
在 Bash 中,許多情況下我們需要定義一個變數來存放某條命令執行的結果,有兩種方法:
例如,你要儲存ls
命令的結果
建議使用方法2,因為反引號和單引號看起來很相似,有時可能會混淆它們
就像下面這條命令一樣,你覺得那種寫法的閱讀體驗更好
一些名稱在 Linux 中被預定義為環境變數,如 USER
、HOME
、PATH
等。我們可以使用 printenv
命令列出它們
所以,我們應該用與環境變數不相同的名稱來宣告我們的變數
Linux 中所有的環境變數都是用大寫字母寫的,所以我們可以用小寫字母來自定義變數,以區別環境變數。這是一個好習慣
感謝閱讀,喜歡作者就動動小手[一鍵三連],這是我寫作最大的動力