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

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

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

使用Bash處理變量的常見錯(cuò)誤

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

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

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

0. 等號(hào)周圍沒有空格

對于許多語言,例如 Python,在等號(hào)周圍添加空格是一個(gè)好習(xí)慣,因?yàn)樗梢蕴岣叽a的可讀性。

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

如果我聲明一個(gè)變量 name,如下:

name="Yang"

這里會(huì)有一個(gè)錯(cuò)誤:

-bash:name:commandnotfound

如上所示,Bash 將 name 視為命令而不是變量,因?yàn)槲姨砑恿瞬槐匾目崭瘛?/p>

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

name="Yang"

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

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

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

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

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

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

2.正確選擇引號(hào)

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

  • 沒有引號(hào)
  • 用單引號(hào)
  • 用雙引號(hào)

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

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

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

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

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

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

3. 避免在命令中使用反引號(hào)

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

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

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

file_list=`ls`

或者

file_list=$(ls)

但是,這里的最佳實(shí)踐始終是使用第二種方法,尤其是在編寫較長的腳本時(shí)。因?yàn)?strong>反引號(hào)和單引號(hào)看起來很相似,有時(shí)你可能會(huì)混淆它們。

4. 避免使用特殊名稱

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

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

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

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

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

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

    關(guān)注

    87

    文章

    11304

    瀏覽量

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

    關(guān)注

    0

    文章

    613

    瀏覽量

    28371
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10184

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

    Protel 常見錯(cuò)誤分析與處理2012最新 Leansmall

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

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

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

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

    Syntax error, unexpected / not declared常見基本語法錯(cuò)誤比如模塊聲明parameter缺少#比如端口列表不全,或者;括號(hào)匹配不全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常見錯(cuò)誤警告

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

    Keil常見錯(cuò)誤警告

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

    基于不變量的軟錯(cuò)誤檢測方法

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

    Python編程時(shí)常見的3個(gè)錯(cuò)誤

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

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

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

    Bash編程常見錯(cuò)誤范例及原因分析

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

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

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

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

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