shell脚本中的大括号{}和方括号()之间的区别

Sat*_*esh 7 shell brackets braces

我们使用大括号{}作为变量表达式

NAME="test"

FILE_NAME=${NAME}file
Run Code Online (Sandbox Code Playgroud)

但我不明白我们在哪些场景中使用方括号()Say nslookup $(hostname)仅适用于()括号.

谁能解释一下?

Clo*_*oud 10

轻微的挑剔第一:

  • 括号 []
  • 括弧 ()
  • 背带 {}
  • (双)引号 ""
  • (单)引号(撇号) ''
  • 反引号``(与波形符号键相同)

在BASh脚本中使用大括号进行复杂的变量扩展.考虑字符串连接:

STR="hello"
STR2=$STR
Run Code Online (Sandbox Code Playgroud)

STR2评价为"你好".如果你想让它像"helloWorld"那样怎么办?做类似的事情是STR2="$STR2World"行不通的,所以你使用大括号,即:STR2="${STR}World".

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

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

STR2=$(date)
Run Code Online (Sandbox Code Playgroud)

现在STR2存储字符串"Thu May 7 09:32:06 PDT 2015".

此外,您可以使用括号在子shell中执行某些操作,这可能会影响您的环境,PID等.对于您希望"一次性"环境必须通过pushd/popd而不是跟踪/恢复环境变量,目录的情况非常有用cd

  • 我相信这些`()`在英国英语中通常被称为"括号". (4认同)
  • @KeithThompson从我发现的,你看起来是正确的.括号被称为括号,或者更明确地称为"圆括号",而"[]"在英国英语中总是被明确地称为"方括号".http://separatedbyacommonlanguage.blogspot.ca/2006/08/parentheses-and-brackets.html (2认同)
  • 如果你要挑剔,那么反引号与所有键盘布局上的波浪键都不一样.不是每个程序员都使用英文键盘,因为许多国家都有自己的标准. (2认同)

小智 5

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

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