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 中所有的環境變數都是用大寫字母寫的,所以我們可以用小寫字母來自定義變數,以區別環境變數,這是一個好習慣
感謝閱讀,喜歡作者就動動小手[一鍵三連],這是我寫作最大的動力
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/547593.html
標籤:其他
