我们使用大括号{}
来表示变量表达式,例如
NAME="test"
FILE_NAME=${NAME}file
但是我不明白我们在什么场景下使用括号()
假设 nslookup $(hostname)
仅适用于 ()
括号。
谁能解释一下吗?
最佳答案
首先是小挑剔:
- 方括号
[]
- 括号
()
- 大括号
{}
- (双引号)
""
- (单个)引号(撇号)
''
- 反引号
``
(与波形符〜键相同)
BASh 脚本中使用大括号进行复杂的变量扩展。考虑字符串连接:
STR="hello"
STR2=$STR
STR2
计算结果为“hello”。如果你想让它像“helloWorld”那样怎么办?执行诸如 STR2="$STR2World"
之类的操作是行不通的,因此您使用大括号,即:STR2="${STR}World"
。
对于方括号,它们的使用类似于反引号`,它将它们之间的文本展开为命令的文本输出。
如果您想将当前时间存储为字符串怎么办?
STR2=$(date)
现在 STR2
存储字符串“Thu May 7 09:32:06 PDT 2015”。
Additionally, you can use parentheses to execute something in a subshell,这可能会影响您的环境、PID 等。对于您想要一个“一次性”环境且必须通过 pushd
/popd
跟踪/恢复环境变量、目录的情况非常有用> 而不是 cd
等
关于shell - shell脚本中大括号{}和中括号()的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30106758/