RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Bash處理變量的常見錯誤

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 作者:子沐愛掃地 ? 2022-05-13 15:52 ? 次閱讀

Linux 中的 Bash 腳本語言支持對變量的操作。但是,如果您從事過其他流行的編程語言開發(fā),那么使用 Bash 處理變量會很容易出錯。因為它的語法與其他語法不同(甚至對某些開發(fā)人員來說有點奇怪)。

這篇文章會根據(jù)我的經(jīng)驗給你5個友情提示。閱讀后,它可以幫助您避免不必要的錯誤。

0. 等號周圍沒有空格

對于許多語言,例如 Python,在等號周圍添加空格是一個好習(xí)慣,因為它可以提高代碼的可讀性。

但是在 Bash 中,你不應(yīng)該在定義變量時添加額外的空格。

如果我聲明一個變量 name,如下:

name="Yang"

這里會有一個錯誤:

-bash:name:commandnotfound

如上所示,Bash 將 name 視為命令而不是變量,因為我添加了不必要的空格。

因此,定義變量的正確方法如下:

name="Yang"

1.正確地定義數(shù)組

在 Bash 中定義一個數(shù)組并不難。我們只需要使用一對括號來包含所有元素,如下例所示:

names=("Yang""Elon""Bill")

俗話說得好,“細(xì)節(jié)決定成敗"。我之前在編寫 Bash 腳本時犯了一個嚴(yán)重的錯誤。我習(xí)慣性地使用逗號(而非空格)來分隔數(shù)組中的每個元素。

names=("Yang","Elon","Bill")

Bash 不會將逗號視為分隔符,并且在 names 數(shù)組中只有一個元素 Yang,Elon,Bill 而不是預(yù)期的三個。

2.正確選擇引號

當(dāng)我們在 Bash 中聲明一個變量時,關(guān)于引號的使用有 3 個可選的方案:

  • 沒有引號
  • 用單引號
  • 用雙引號

默認(rèn)情況下,Bash 中的每個值都是一個字符串。因此,如果不需要空格,我們就不需要使用任何引號。(同樣,它與其他語言有些不同,在其他語言中,您不能在沒有引號的情況下定義字符串)

當(dāng)您需要使用引號時,請注意單引號雙引號之間的區(qū)別。

例如,讓我們聲明 3 個變量,如下所示。那么,truth1truth2 有什么區(qū)別呢?

ca35d5f8-ced3-11ec-bce3-dac502259ad0.png

如果你打印它們,你會看到 truth1${name} is amazing.。而 truth2Yang is amazing.。

總而言之,一對單引號內(nèi)的字符串將始終被解釋為它的本身。

3. 避免在命令中使用反引號

在 Bash 中,我們可以將命令的結(jié)果保存到變量中。有兩種可能的方法來做到這一點:

  • variable=`command`
  • variable=$(command)

例如,要保存 ls 命令的結(jié)果,我們可以這樣寫:

file_list=`ls`

或者

file_list=$(ls)

但是,這里的最佳實踐始終是使用第二種方法,尤其是在編寫較長的腳本時。因為反引號單引號看起來很相似,有時你可能會混淆它們。

4. 避免使用特殊名稱

一些名稱在 Linux 中被預(yù)定義為環(huán)境變量,如 USERHOME、PATH 等。我們可以使用 printenv 命令列出它們。

顯然,我們不應(yīng)該用與環(huán)境變量相同的名稱來聲明我們的變量。

好消息是 Linux 中所有的環(huán)境變量都是用大寫字母寫的,所以我們可以用小寫字母來自定義變量,以區(qū)別環(huán)境變量。這是一個好習(xí)慣。

原文標(biāo)題:關(guān)于 Linux Bash Shell 中變量的 5 個易錯點

文章出處:【微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209322
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28360
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10179

原文標(biāo)題:關(guān)于 Linux Bash Shell 中變量的 5 個易錯點

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何在bash shell腳本中使用變量

    如果你使用編程語言編寫過程序,那么一定接觸過變量。而在 bash 腳本的編寫時,變量也是一個很重要的概念。今天我們分享一下如何在 bash 腳本中使用
    發(fā)表于 12-02 16:32 ?2101次閱讀
    如何在<b class='flag-5'>bash</b> shell腳本中使用<b class='flag-5'>變量</b>

    如何通過命令行將變量以參數(shù)的形式傳遞給bash腳本

    我們在上一篇文章中介紹了如何在 bash 腳本中使用變量,可以響應(yīng)各種數(shù)據(jù)以及接收用戶輸入。
    發(fā)表于 12-02 16:38 ?1374次閱讀
    如何通過命令行將<b class='flag-5'>變量</b>以參數(shù)的形式傳遞給<b class='flag-5'>bash</b>腳本

    初學(xué)仿真常見錯誤

    本推文針對Sentaurus初學(xué)者頻繁遇到的錯誤進(jìn)行簡單整理,具體是包括Sde、Sdevice仿真常見錯誤。
    的頭像 發(fā)表于 12-03 16:24 ?2383次閱讀
    初學(xué)仿真<b class='flag-5'>常見</b>的<b class='flag-5'>錯誤</b>

    Protel 常見錯誤分析與處理2012最新 Leansmall

    Protel 常見錯誤分析與處理2012最新 Leansmall
    發(fā)表于 08-16 20:09

    bash shell 中如何區(qū)別 $()和${}和$(())和(())

    都能使用,若你用 bash2 的話,肯定沒問題...看 ${ } 吧... 它其實就是用來作變量替換用的啦。一般情況下,$var 與 ${var} 并沒有啥不一樣。但是用 ${ } 會比較精確的界定
    發(fā)表于 12-06 11:39

    Verilog常見錯誤(1):仿真錯誤

    Syntax error, unexpected / not declared常見基本語法錯誤比如模塊聲明parameter缺少#比如端口列表不全,或者;括號匹配不全begin和end匹配不全關(guān)鍵字
    發(fā)表于 04-08 08:47

    Bash 環(huán)境變量

    Bash環(huán)境變量的理解與運(yùn)用初學(xué)者可以在此教程中了解環(huán)境變量。bash 變量,尤其是討厭的環(huán)境變量
    發(fā)表于 11-01 15:13

    Keil常見錯誤警告

    該文檔詳細(xì)介紹了在Keil編譯環(huán)境下的常見錯誤警告,及其解決方法
    發(fā)表于 08-29 14:22 ?4次下載

    Keil常見錯誤警告

    Keil常見錯誤警告,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-17 11:43 ?0次下載

    基于不變量的軟錯誤檢測方法

    錯誤是高輻照空間環(huán)境下影響計算可靠性的主要因素,結(jié)果錯誤(silent data corruption,簡稱SDC)是軟錯誤造成的一種特殊的故障類型.針對SDC難以檢測的問題。提出了一種基于不
    發(fā)表于 01-17 14:00 ?0次下載

    Python編程時常見的3個錯誤

    以下列出了學(xué)習(xí) Python 時犯的三種錯誤: 1.可變數(shù)據(jù)類型作為函數(shù)定義中的默認(rèn)參數(shù) 2.可變數(shù)據(jù)類型作為類變量 3. 可變的分配錯誤
    發(fā)表于 03-21 11:46 ?1186次閱讀

    PCB作業(yè)中常見14大錯誤

    原理圖常見錯誤
    的頭像 發(fā)表于 03-12 11:06 ?4108次閱讀

    Bash編程常見錯誤范例及原因分析

    Bash Pitfalls[1] 文章介紹了 40 多條日常 Bash 編程中,老手和新手都容易忽略的錯誤編程習(xí)慣。每條作者在給出錯誤的范例上,詳細(xì)分析與解釋
    的頭像 發(fā)表于 06-12 16:48 ?1649次閱讀

    每個Linux用戶都需要知道的重要Bash shell變量

    Bash 是大多數(shù) Linux 發(fā)行版的默認(rèn) shell。以下是每個 Linux 用戶都需要知道的一些重要的 Bash shell 變量。
    的頭像 發(fā)表于 02-13 09:22 ?905次閱讀

    Bash腳本中特殊變量$0是什么?

    Bash 腳本中,`$0` 是一個特殊變量,它代表當(dāng)前腳本的路徑和名稱。這個變量用于表示腳本自身,它是 Bash 環(huán)境中的一個重要組成部分。`$0`
    的頭像 發(fā)表于 05-12 14:41 ?1841次閱讀
    RM新时代网站-首页