命令替换中的花括号的目的是什么,在bash中分配给变量,例如
VAR=$({})
我看到了这种结构的代码:
#!/bin/bash
test $# -ge 1 || { echo "usage: $0 write-size [wait-time]"; exit 1; }
test $# -ge 2 || set -- "$@" 1
bytes_written=$(
{
exec 3>&1
{
perl -e '
$size = $ARGV[0];
$block = q(a) x $size;
$num_written = 0;
sub report { print STDERR $num_written * $size, qq(\n); }
report; while (defined syswrite STDOUT, $block) {
$num_written++; report;
}
' "$1" 2>&3
} | (sleep "$2"; exec 0<&-);
} | tail -1
)
printf "write size: %10d; bytes successfully before error: %d\n" \
"$1" "$bytes_written"
取自here
答案 0 :(得分:2)
大括号用于在脚本中对多个命令进行分组。它们在命令替换中具有与顶层相同的含义。
它们就像将命令包装在括号中,除了花括号不创建子shell,而圆括号(如果命令执行变量赋值或cd
之类的事情则这很重要)。此外,与括号不同,花括号不是自我分隔的,因此您需要在{
之后的空格和;
之前的命令分隔符(例如}
或换行符)。