我想知道 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
启用时)