总结
豆包 AI 助手文章总结
首页 > 系统教程 > LINUX > 正文

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

WBOY
发布: 2024-02-12 22:09:13
转载
1029人浏览过

bash脚本语言支持在linux中对变量进行操作。但是,如果您有其他流行编程语言的开发经验,那么使用bash处理变量可能会容易出错。这是因为它的语法与其他语言不同(对某些开发人员来说甚至有些奇怪)。

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

这篇文章将根据我的经验为您提供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 有什么区别呢?

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

如果你打印它们,你会看到 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 中所有的环境变量都是用大写字母写的,所以我们可以用小写字母来自定义变量,以区别环境变量。这是一个好习惯。

以上就是关于 Linux Bash Shell 中变量的 5 个易错点的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:良许Linux教程网网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号