gpt4 book ai didi

bash - bash脚本中没有空格的变量赋值背后的基本原理是什么

转载 作者:行者123 更新时间:2023-12-04 16:16:47 24 4
gpt4 key购买 nike

我正在尝试为 AWS 编写一个自动化流程,该流程需要在 bash 脚本中进行一些 JSON 处理和其他操作。我正在关注一些关于 bash 脚本的博客,我发现了这个:

a=b

附上以下说明:

There is no space on either side of the equals ( = ) sign. We also leave off the $ sign from the beginning of the variable name when setting it

这很难看,而且与其他脚本语言相比很难阅读,用户在编写 bash 脚本时很容易因为在中间留有空格而犯错。我认为每个人都喜欢编写干净易读的代码,这种限制肯定不利于代码的可读性。

你能解释一下为什么吗?高度赞赏带有示例的解释。

最佳答案

这是因为否则语法会产生歧义。考虑这个命令行:

cat = foo

这是对变量 cat 的赋值,还是使用参数“=”和“foo”运行命令 cat?请注意,“=”和“foo”都是完全合法的文件名,因此在 cat 上运行是合理的。 Shell 语法解决了这个问题,有利于命令解释,因此为了避免这种解释,您需要省略空格。 cat =foo 也有同样的问题。

另一方面,考虑:

var= cat

命令 cat 运行时变量 var 设置为空字符串(即 var='' cat 的简写) ,或对 shell 变量 var 的赋值?同样,shell 语法有利于命令解释,因此您需要避免添加空格的诱惑。

在 shell 语法中有很多地方空格是重要的分隔符。另一个经常搞砸的地方是在测试中,如果你遗漏了 any 中的空格:

if [ "$foo" = "$bar" ]

...它会导致不同的含义,这可能会导致错误,或者可能只是默默地做了错误的事情。

我要说的是 shell 语法不允许您任意添加或删除空格以提高可读性。甚至不要尝试,你只会破坏东西。

关于bash - bash脚本中没有空格的变量赋值背后的基本原理是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56910878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com