在Bash中的一个语句中处理多个参数扩展

时间:2014-03-11 13:51:00

标签: bash

A。 This bash guide表示您不能在同一语句中使用多个参数扩展。但是,请遵循以下示例:

$ k="$(( 1 + 1 ))"
$ echo "$(( $k + 2 ))"
4

显然你可以(不加引号$k)。我怎么能避免在这个例子中嵌套$k

B。此外,指南建议始终引用参数扩展,但在该示例中我应该如何引用$k

在任何情况下,以下都会引发语法错误:
echo "$(( "$k" + 2 ))"
以及
echo "$(( \"$k\" + 2 ))"

但是我猜测指南意味着只需要引用外部参数扩展。

1 个答案:

答案 0 :(得分:1)

算术扩展不是参数扩展。见man bash

  

$((表达式))

     

表达式被视为在双引号内,但括号内的双引号未被特别处理。表达式中的所有标记都经历参数扩展,字符串扩展,命令替换和引用删除。算术扩展可以嵌套。

相关问题