A。 This bash guide表示您不能在同一语句中使用多个参数扩展。但是,请遵循以下示例:
$ k="$(( 1 + 1 ))"
$ echo "$(( $k + 2 ))"
4
显然你可以(不加引号$k
)。我怎么能避免在这个例子中嵌套$k
?
B。此外,指南建议始终引用参数扩展,但在该示例中我应该如何引用$k
?
在任何情况下,以下都会引发语法错误:
echo "$(( "$k" + 2 ))"
以及
echo "$(( \"$k\" + 2 ))"
但是我猜测指南意味着只需要引用外部参数扩展。
答案 0 :(得分:1)
算术扩展不是参数扩展。见man bash
:
$((表达式))
表达式被视为在双引号内,但括号内的双引号未被特别处理。表达式中的所有标记都经历参数扩展,字符串扩展,命令替换和引用删除。算术扩展可以嵌套。