bash 变量赋值中的单括号

bash 变量赋值中的单括号

我想知道 bash 中的单括号。我知道它们用于在子 shell 中执行命令,并且用于创建数组,但是它们还用于其他用途吗?

引起我注意的一件事是,当您使用 in 变量赋值时,例如

var=(hello)
echo $var    # hello

bash 不会生成错误或任何内容,并且输出与 if 相同

var=hello

这两个变量定义相同还是有区别?

答案1

在您的情况下,括号()用作数组定义,例如

a=(one two three)   # array definition
echo "${a}"         # print first element of array a
echo "${a[0]}"      # print first element of array a
echo "${a[1]}"      # print *second* element of array a
echo "${#a[@]}"     # print number of elements in array a

如果将单个变量放入数组中,那么您就只有一个包含单个元素的数组。


要回答您的另一个问题,括号是否也用于其他用途:在很多情况下,bash它们可以与其他字符结合使用:

  • 命令替换:$()
  • 过程替代:<()>()
  • 子外壳:(command)
  • 算术评估:(())
  • 函数定义:fun () { echo x; }
  • glob 中的模式列表:?(), *(), +(), @(), !()(仅当extglob启用时

相关内容