我们使用大括号{}
作为变量表达式,如
NAME="test"
FILE_NAME=${NAME}file
但我不明白我们在哪些情况下使用方括号()
说nslookup $(hostname)
仅适用于()
括号。
有人可以解释一下吗?
答案 0 :(得分:10)
轻微的挑剔:
[]
()
{}
""
''
``
(与波浪号〜键相同)在BASh脚本中使用大括号进行复杂的变量扩展。考虑字符串连接:
STR="hello"
STR2=$STR
STR2
评估为“你好”。如果你想让它像“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
/ {{跟踪/恢复环境变量,目录的情况非常有用1}}而不是popd
等。
答案 1 :(得分:4)
使用括号(
执行某些操作。碰巧有一个名为hostname的程序 - 所以$(hostname)将执行它。
尝试which hostname
查看该程序所在的位置