对变量执行操作。减1

Nel*_*lla 1 variables bash operation

我有个问题。我有一个运行良好的 bash 脚本。

    while read val1 val2 val3
    do
    echo "ncap2 -Oh -s'TOPOBATHY(($val1,$val2))=$val3.'"
    done < $tmpdir/tmp1 > $tmpdir/tmp2
Run Code Online (Sandbox Code Playgroud)

我只想对 val1 和 val2 执行一次操作,减去 1。我尝试直接减去,但它不起作用。有没有办法做到这一点。在此先感谢您的帮助!

    while read val1 val2 val3
    do
    echo "ncap2 -Oh -s'TOPOBATHY(($val1-1),($val2-1))=$val3.'"
    done < $tmpdir/tmp1 > $tmpdir/tmp2
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以使用此语法对 Bash 中的变量执行(整数)算术

对于您的具体情况,您可以在调用变量之前设置变量的新值echo

val1=$((val1 - 1))
Run Code Online (Sandbox Code Playgroud)

或者你可以将其内联:

echo "ncap2 -Oh -s'TOPOBATHY($((val1 - 1)),$((val2 - 1 )))=$val3.'"
Run Code Online (Sandbox Code Playgroud)

当然,您目前依赖用户输入合适的值,因为您提供的示例中没有错误检查/输入清理。