2014-09-30 37 views
0

我有这个简单的问题,但我对bash语法非常陌生; 我需要打印这一行应该输出像Starting 3 more instances

echo 'Starting '($2 - $total_running_instances)' more instances' 

但我不知道怎么的bash希望我是x链接 - Y计算的字符串的其余部分,我试图把“+ “他们之间或”。“像PHP处理字符串,我得到的语法错误,如果我尝试这样:

echo 'Starting '.($2 - $total_running_instances).' more instances' 

echo 'Starting '+($2 - $total_running_instances)+' more instances' 

回答

4

算术扩展的符号(评估算术表达式和扩大其结果)是$((...))。您可以编写:

echo "Starting $(($2 - total_running_instances)) more instances" 

请参阅§3.5.5 "Arithmetic Expansion" in the Bash Reference Manual

你看到的问题是,(...)的算术扩展的符号,而是在一个subshell运行的整个bash命令的符号。

0

或者:

echo "Starting `expr $2 - $total_running_instances` more instances" 
+0

没有必要在'bash'或任何其他POSIX兼容的外壳使用'expr'算术。 – chepner 2014-09-30 15:24:57

相关问题