bash - 我们什么时候需要用大括号括住 shell 变量?

标签 bash shell syntax curly-braces variable-expansion

在 shell 脚本中,我们什么时候在扩展变量时使用 {}

例如,我看到了以下内容:

var=10        # Declare variable

echo "${var}" # One use of the variable
echo "$var"   # Another use of the variable

是否存在显着差异,还是只是风格?一个比另一个更受欢迎吗?

最佳答案

在这个特定的例子中,它没有区别。但是,如果您想扩展字符串中的变量 foo${} 中的 {} 很有用

"${foo}bar"

因为 "$foobar" 会扩展 foobar 标识的变量。

在以下情况下也无条件需要大括号:

  • 扩展数组元素,如 ${array[42]}
  • 使用参数扩展操作,如 ${filename%.*}(删除扩展名)
  • 将位置参数扩展到 9 以上:"$8 $9 ${10} ${11}"

在任何地方都这样做,而不仅仅是在可能有歧义的情况下,可以被认为是良好的编程习惯。这既是为了保持一致性,也是为了避免像 $foo_$bar.jpg 这样的意外,下划线成为变量名称的一部分在视觉上并不明显。

关于bash - 我们什么时候需要用大括号括住 shell 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8748831/

相关文章:

bash - 如何在不退出程序的情况下退出bash中的if语句?

Linux:将字数 append 到文件的每一行

jquery - 更改函数中事件的顺序

c++ - c++中双括号 "[[foo()]] type name;"语法的含义?

python - 为 Mercurial Hook 设置环境变量

c - 如果范围是一个不同的struct定义,那么struct声明是否存在于声明范围之后?

linux - 脚本或按键绑定(bind)可在 Linux 上轻松运行命令

bash,bc modulo 不适用于 -l 标志

bash - 将 grep 搜索结果传送到 sed 中替换

linux - 如何通过 Linux 脚本创建封面样式文本文件?