首页 > 解决方案 > shell 脚本中的变量赋值约定

问题描述

=在 bash 脚本中,它似乎不允许标志两侧有空格。例如:

# bad
a= "ok"
# bad
a ="ok"
# bad
a = "ok"
# good
a="ok"

这在所有shell语言中都是一样的,还是特定于 bash 的?出于好奇,为什么赋值运算符旁边不允许有空格?

标签: bashshell

解决方案


对于特定的 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

应该设置xecho然后运行echo hello还是应该设置x""然后运行echo echo hello

如果您希望您的作业用空格很好地格式化,您可以使用((...))算术评估:

pax:~> (( val = 117 / 3 )) ; echo $val
39

推荐阅读