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 中被预定义为环境变量,如 USERHOMEPATH 等。我们可以使用 printenv 命令列出它们。

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

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

原文标题:关于 Linux Bash Shell 中变量的 5 个易错点

文章出处:【微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206744
  • 变量
    +关注

    关注

    0

    文章

    596

    浏览量

    28112
  • Bash
    +关注

    关注

    0

    文章

    57

    浏览量

    10073

原文标题:关于 Linux Bash Shell 中变量的 5 个易错点

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在bash shell脚本中使用变量

    如果你使用编程语言编写过程序,那么一定接触过变量。而在 bash 脚本的编写时,变量也是一个很重要的概念。今天我们分享一下如何在 bash 脚本中使用
    发表于 12-02 16:32 1672次阅读
    如何在<b class='flag-5'>bash</b> shell脚本中使用<b class='flag-5'>变量</b>

    如何通过命令行将变量以参数的形式传递给bash脚本

    我们在上一篇文章中介绍了如何在 bash 脚本中使用变量,可以响应各种数据以及接收用户输入。
    发表于 12-02 16:38 1097次阅读
    如何通过命令行将<b class='flag-5'>变量</b>以参数的形式传递给<b class='flag-5'>bash</b>脚本

    初学仿真常见错误

    本推文针对Sentaurus初学者频繁遇到的错误进行简单整理,具体是包括Sde、Sdevice仿真常见错误
    的头像 发表于 12-03 16:24 822次阅读
    初学仿真<b class='flag-5'>常见</b>的<b class='flag-5'>错误</b>

    盘点PCB设计中的常见错误

    搞技术,难免存在错误,只有经历过错误,才能更快地成长。PCB设计也一样,今天就来盘点一下PCB设计中最常见错误
    的头像 发表于 01-12 09:53 737次阅读
    盘点PCB设计中的<b class='flag-5'>常见</b><b class='flag-5'>错误</b>

    Protel 常见错误分析与处理2012最新 Leansmall

    Protel 常见错误分析与处理2012最新 Leansmall
    发表于 08-16 20:09

    原创|高速PCB设计中网表导入的常见错误处理

    PCB设计中网表导入常见错误的查找:1、打开netin。log文件2、查找关键字error,如下图:网表常见错误查找1网表常见
    发表于 01-10 10:51

    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次下载

    Bash编程常见错误范例及原因分析

    Bash Pitfalls[1] 文章介绍了 40 多条日常 Bash 编程中,老手和新手都容易忽略的错误编程习惯。每条作者在给出错误的范例上,详细分析与解释
    的头像 发表于 06-12 16:48 1390次阅读

    每个Linux用户都需要知道的重要Bash shell变量

    Bash 是大多数 Linux 发行版的默认 shell。以下是每个 Linux 用户都需要知道的一些重要的 Bash shell 变量
    的头像 发表于 02-13 09:22 635次阅读

    Bash脚本中特殊变量$0是什么?

    Bash 脚本中,`$0` 是一个特殊变量,它代表当前脚本的路径和名称。这个变量用于表示脚本自身,它是 Bash 环境中的一个重要组成部分。`$0`
    的头像 发表于 05-12 14:41 1520次阅读