bash - shell 脚本中的变量赋值约定
问题描述
=
在 bash 脚本中,它似乎不允许标志两侧有空格。例如:
# bad
a= "ok"
# bad
a ="ok"
# bad
a = "ok"
# good
a="ok"
这在所有shell
语言中都是一样的,还是特定于 bash 的?出于好奇,为什么赋值运算符旁边不允许有空格?
解决方案
对于特定的 shell,您需要查找该 shell 的文档。对于bash
,要求在该形式中没有空格(请注意,在 的两边都没有空格=
):
一个变量可以通过一个形式的语句来赋值
name=[value]
。
出现这种情况的一个原因是您可以使用命令临时分配,其中变量仅在命令期间设置:
pax:~> x=314159 ; echo $x
314159
pax:~> x=42 bash -c 'echo $x'
42
pax:~> echo $x
314159
在作业中允许空格会使弄清楚作业在哪里完成以及命令从哪里开始有点困难。例如:
x= echo echo hello
应该设置x
为echo
然后运行echo hello
还是应该设置x
为""
然后运行echo echo hello
?
如果您希望您的作业用空格很好地格式化,您可以使用((...))
算术评估:
pax:~> (( val = 117 / 3 )) ; echo $val
39
推荐阅读
- php - Grav CMS:在页面选择列表中隐藏模块化页面
- php - PHP静态类自动重置
- javascript - 如何在 html 中添加点击到产品列表并将项目点击到 firestore
- assembly - ARM 向量指令 - 16 字节与 8 字节
- javascript - Javascript 承诺调用只发生一次
- ruby-on-rails - 从 rails 中的 graphql api 返回 base64 字符串
- r - 如何通过反应性在闪亮中添加递归模块
- c# - 如何使用 Selenium C# 在 Chrome 中禁用下载警告?
- javascript - Nextjs 上的 ContentEditable,更新未显示在状态
- c++ - 类无法访问其自己的私有静态 constexpr 方法 - Clang 错误?