8

我们对变量表达式使用大括号{},例如

NAME="test"

FILE_NAME=${NAME}file

但我不明白我们在哪些场景中使用括号 () 说nslookup $(hostname)只适用于()括号有效。

有人可以解释吗?

4

2 回答 2

12

首先是轻微的挑剔:

  • 括号[]
  • 括号()
  • 大括号{}
  • (双)引号""
  • (单)引号(撇号)''
  • 反引号``(与波浪号 ~ 键相同)

大括号在 BAsh 脚本中用于复杂的变量扩展。考虑字符串连接:

STR="hello"
STR2=$STR

STR2评估为“你好”。如果你想让它像“helloWorld”一样。做类似的事情是STR2="$STR2World"行不通的,所以你使用大括号,即:STR2="${STR}World"

至于括号,它们被使用,类似于反引号,`,它将它们之间的文本扩展为命令的文本输出。

如果您想将当前时间存储为字符串怎么办?

STR2=$(date)

现在STR2存储字符串“Thu May 7 09:32:06 PDT 2015”。

此外,您可以使用括号在子 shell 中执行某些操作,这可能会影响您的环境、PID 等。对于您想要一个“一次性”环境而必须通过pushd/popd而不是cd, ETC。

于 2015-05-07T16:32:27.347 回答
5

使用括号(执行某些操作。恰好有一个名为 hostname 的程序 - 所以 $(hostname) 将执行它。

尝试which hostname查看该程序所在的位置

于 2015-05-07T16:32:56.377 回答