问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于Linux Bash Shell 中变量的 5 个易错点

发布网友 发布时间:2024-09-25 18:50

我来回答

1个回答

热心网友 时间:2024-12-01 11:09

Linux 中的 Bash 脚本语言支持对变量的操作。但是,如果您从事过其他流行的编程语言开发,那么使用 Bash 处理变量会很容易出错。因为它的语法与其他语法不同(甚至对某些开发人员来说有点奇怪)。

这篇文章会根据我的经验给你5个友情提示。阅读后,它可以帮助您避免不必要的错误。

0. 等号周围没有空格

对于许多语言,例如 Python,在等号周围添加空格是一个好习惯,因为它可以提高代码的可读性。

但是在 Bash 中,你不应该在定义变量时添加额外的空格。

如果我声明一个变量?name,如下:

name = "Yang"

这里会有一个错误:

-bash: name: command not found

如上所示,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 个变量,如下所示。那么,truth1?和?truth2?有什么区别呢?

如果你打印它们,你会看到?truth1?是?${name} is amazing.。而?truth2?是?Yang is amazing.。

总而言之,一对单引号内的字符串将始终被解释为它的本身。

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

在 Bash 中,我们可以将命令的结果保存到变量中。有两种可能的方法来做到这一点:

variable=`command`

variable=$(command)

例如,要保存?ls?命令的结果,我们可以这样写:

file_list=`ls`

或者

file_list=$(ls)

但是,这里的最佳实践始终是使用第二种方法,尤其是在编写较长的脚本时。因为反引号和单引号看起来很相似,有时你可能会混淆它们。

4. 避免使用特殊名称

一些名称在 Linux 中被预定义为环境变量,如?USER、HOME、PATH?等。我们可以使用?printenv?命令列出它们。

显然,我们不应该用与环境变量相同的名称来声明我们的变量。

好消息是 Linux 中所有的环境变量都是用大写字母写的,所以我们可以用小写字母来自定义变量,以区别环境变量。这是一个好习惯。

原文:https://juejin.cn/post/7099646934360522783
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问昆山正仪到江苏省昆山市出口加工区新竹路99号 怎么坐班车最近? 跪求苏州神达电脑地址!!! 华为运动耳机挂脖式怎么配对 雅酷美挂脖式无线蓝牙防水耳机-运动时尚,自由畅听 已知函数f(x)=cos^2x-sin^2x+2根号3sinxcosx+1 原先微信有联系后来突然对方要求我对他进行朋友验证我没有他电话号码... 已知函数f(x)=cos^2x-sin^2x+2根号3sinxcosx 已知函数fx=cos^2*x-sin^2*x+2sinx*cosx,求fx的最小正周期,并求当... 已知函数f(x)=cos2x-sin2x 4sinx·cosx求f(x)的最小正周期,并求当x为... 已知f(x)=cos^2x-sin^x+2sinxcosx。①求函数最小正周期②当x∈【0... 余药共享的出发点和具有哪些特点? 上海社保厂里交多少钱一个月工资吗 Linux gcc编译程序时,-I(大写 i )、-L (大写 L)、-I(小写 L )的作用与... shy lie是什么意思? 社保15年后每月拿多少怎么算 给大家计算一下 如果网上订票的界面全部是灰色就是票没有了吗? 没有任何反应,全部都是灰色的 在上海工资6000交三险的比例是多少? 加工普通圆柱螺纹M50×4时,螺纹的内径为( )。 A.47mm B.45mm C.45.7m... ...如螺纹M50*螺距3mm,刀具直径40mm, 谢谢哪位大师帮帮忙 proof和provement有什么不同? 实木板材品牌排行榜各位使用到了没?哪个更放心? 如何能看懂木工图纸呢 m50螺纹代表什么意思 生态板10大品牌到底如何选?近期准备订购板材。 澳门大学本科录取分数线2022 实木板材品牌排行榜各位找过了吗?最新榜单出炉了吗 澳门大学内陆 十大生态板材大家觉得哪个更好?准备订购板材。 盘锦佳酿300年三星42度价格 python385安装教程(python38安装教程) 余药共享是否合理? 为什么现在很流行余额宝“余药共享”? 忻州怎么联系服务 ride4纽北怎么进维修站 线上买酒app哪个靠谱,这些平台定能让你买到合适的酒 我爱上一个有家庭的男人每天都希望他来我离不开他办 从界首市到平塘县有多远 噔噔噔,噔噔噔,噔噔噔噔噔噔噔,是什么曲子?是一首有点忧伤的钢琴曲_百... 你喜欢一个有家庭男人,离不开怎么办 ...噔灯 等灯 噔噔噔噔噔噔噔噔 是一首钢琴曲吧,还有点伤感那种... 喜欢上了一个有家庭的男人,离开又舍不得,但又怕越陷越深更离不开了... ...有两句同样的;:节奏是:噔噔噔噔噔噔嘿,噔噔噔噔噔噔嘿 请教养花高手:用仙人掌嫁接蟹爪兰,按二者谁的习性管理? 找从一年级到四年级有关于"纸"的成语,俗语,诗,故事 普洱熟茶可以长期饮用长期饮用有什么好处 长期喝熟普洱 每天喝熟普洱茶对身体有好处吗 普洱熟茶可以长期饮用吗 2022开学典礼校长致辞简短