在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

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

0. 等號周圍沒有空格

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

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

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

name="Yang"

這里會有一個錯誤:

-bash:name:commandnotfound

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

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

name="Yang"

1.正確地定義數組

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

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

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

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

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

2.正確選擇引號

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

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

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

當您需要使用引號時,請注意單引號雙引號之間的區別。

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

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

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

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

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

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

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

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

file_list=`ls`

或者

file_list=$(ls)

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

4. 避免使用特殊名稱

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

顯然,我們不應該用與環境變量相同的名稱來聲明我們的變量。

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

原文標題:關于 Linux Bash Shell 中變量的 5 個易錯點

文章出處:【微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

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

    關注

    87

    文章

    11479

    瀏覽量

    213040
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28862
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10413

原文標題:關于 Linux Bash Shell 中變量的 5 個易錯點

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

    初學仿真常見錯誤

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

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

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

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

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

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

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

    Bash 環境變量

    Bash環境變量的理解與運用初學者可以在此教程中了解環境變量。bash 變量,尤其是討厭的環境變量
    發表于 11-01 15:13

    Keil常見錯誤警告

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

    Keil常見錯誤警告

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

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

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

    PCB作業中常見14大錯誤

    原理圖常見錯誤
    的頭像 發表于 03-12 11:06 ?4320次閱讀

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

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

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

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

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

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

    常見xgboost錯誤及解決方案

    XGBoost(eXtreme Gradient Boosting)是一種流行的機器學習算法,用于解決分類和回歸問題。盡管它非常強大和靈活,但在使用過程中可能會遇到一些常見錯誤。以下是一些常見
    的頭像 發表于 01-19 11:22 ?2391次閱讀
    主站蜘蛛池模板: 97色噜噜 | 久久青草91线频免费观看 | 午夜亚洲国产精品福利 | 欧美伦理一区二区三区 | 国产xxxx极品bbw视色 | 国模龙园园私拍337p | 六月丁香婷婷综合 | 农村妇女野外一级毛片 | 欧美一级片观看 | 欧美性色黄在线视 | 亚洲伦理一区 | 亚洲一本高清 | 国产高清视频在线播放www色 | 美国bj69 video18| 午夜影院欧美 | 激情午夜婷婷 | 亚洲国产毛片aaaaa无费看 | 亚洲视频在线视频 | 婷婷丁香在线 | 在线天堂资源 | h在线观看视频免费网站 | 高清一区二区三区免费 | 四虎最新紧急入口4hu | 色噜噜亚洲男人的天堂 | 日日做日日摸夜夜爽 | 日韩高清成人毛片不卡 | 天天干b| 特级淫片aaaaa片毛片 | 夜夜爽爽爽| 午夜国产精品久久久久 | 在线伊人网 | 国产偷窥女洗浴在线观看亚洲 | 免费看片你懂的 | 四虎新网址 | 丝袜美腿视频一区二区三区 | 天天天天天天操 | 国产嫩草影院精品免费网址 | 美女视频黄a视频美女大全 美女视频一区二区 | 免费观看在线观看 | 亚洲人色大成年网站在线观看 | 8888四色奇米在线观看不卡 |