阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

99次阅读
没有评论

共计 1286 个字符,预计需要花费 4 分钟才能阅读完成。

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

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

0. 等号周围没有空格

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

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

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

关于 Linux Bash Shell 中变量的 5 个易错点
这里会有一个错误:
关于 Linux Bash Shell 中变量的 5 个易错点

如上所示,Bash 将 name 视为命令而不是变量,因为我添加了不必要的空格。

因此,定义变量的正确方法如下:

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

1. 正确地定义数组

在 Bash 中定义一个数组并不难。我们只需要使用一对括号来包含所有元素,如下例所示:

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

俗话说得好,“细节决定成败 ”。我之前在编写 Bash 脚本时犯了一个严重的错误。我习惯性地使用逗号(而非空格)来分隔数组中的每个元素。

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

Bash 不会将逗号视为分隔符,并且在 names 数组中只有一个元素 Yang,Elon,Bill 而不是预期的三个。

2. 正确选择引号

当我们在 Bash 中声明一个变量时,关于引号的使用有 3 个可选的方案:

  • 没有引号
  • 用单引号
  • 用双引号

默认情况下,Bash 中的每个值都是一个字符串。因此,如果不需要空格,我们就不需要使用任何引号。(同样,它与其他语言有些不同,在其他语言中,您不能在没有引号的情况下定义字符串)

当您需要使用引号时,请注意 单引号 双引号 之间的区别。

例如,让我们声明 3 个变量,如下所示。那么,truth1 和 truth2 有什么区别呢?

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

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

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

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

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

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

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

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

或者

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

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

4. 避免使用特殊名称

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

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

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

链接:https://medium.com/techtofreedom/5-bug-prone-points-about-variables-in-linux-bash-scripting-61a777d152a

(版权归原作者所有,侵删)

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计1286字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中