【问题标题】:How to insert ($x-$y) inside a bash printed string如何在 bash 打印字符串中插入 ($x-$y)
【发布时间】:2014-11-25 04:42:56
【问题描述】:

我有这个简单的问题,但我对 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'

【问题讨论】:

    标签: linux bash shell command-line sh


    【解决方案1】:

    交替:

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

    【讨论】:

    • bash 或任何其他与POSIX 兼容的shell 中,无需使用expr 进行算术运算。
    【解决方案2】:

    算术扩展(计算算术表达式并扩展其结果)的符号是$((...))。你可以写:

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

    §3.5.5 "Arithmetic Expansion" in the Bash Reference Manual

    您看到的问题是(...) 不是算术扩展符号,而是在 subshell 中运行整个 Bash 命令的符号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 2013-06-16
      • 2022-06-21
      • 2012-08-27
      • 1970-01-01
      相关资源
      最近更新 更多