我正在尝试将这行 C 程序转换为 bash 脚本:C:
bin = bin+d*10^n-1;
bin,d,n 被声明为 int。bash:
bin=`exp $bin+$d\*10^n-1`
但它是错误的
答案1
Bash 具有内置的算术表达式功能。该功能称为“算术扩展”。bash 手册页包含更多信息。
语法是$((expression))。 就您而言,脚本可能包含以下内容。
#!/bin/bash
set -x
bin=1
d=2
n=3
echo $((${bin} + ${d}*10^${n}-1))
运算符优先级与 C 类似,但并不完全相同,因为 Bash 和 C 支持不同的运算符。这里有一个有用的参考:https://www.gnu.org/software/bash/manual/html_node/Shell-Arithmetic.html#Shell-Arithmetic
上述内容仅在操作数为 C int 时才适用。算术扩展不支持浮点运算。