仅使用字符串变量对 CSH 或 SH 进行数学计算

Do math on CSH or SH only with string variables

我有字符串变量 MIN 和 SEC(分和秒)。

MIN = "1"
SEC = "34"

我想对这些进行计算。

TOTSEC = MIN*60 + SEC

我试过了:

expr $SEC + $MIN * 60

结果:

expr: non-numeric argument

让大家知道我是自定义微型计算机上的 运行 busybox,因此无法访问 bash、bc 和其他解决方案提供的内容。

sh 中,我假设您指的是 POSIX shell, your best option is to use Arithmetic Expansion:

$ MIN=1
$ SEC=34
$ TOTSEC=$(( MIN * 60 + SEC ))
$ printf '%d\n' "$TOTSEC"
94

然而,在 csh 中,built-in 的数学运算完全不同:

% set MIN = 1
% set SEC = 34
% @ TOTSEC = ( $MIN * 60 + $SEC )
% printf '%d\n' "$TOTSEC"
94

根据手册页,@ 命令允许执行数值计算并将结果分配给变量。

请注意 expr 命令在 shell 之外,因此它应该可以从任何一个命令中使用。

sh中:

$ TOTSEC=$(expr "$MIN" \* 60 + "$SEC")

csh中:

% set TOTSEC = `expr "$MIN" \* 60 + "$SEC"`

注意:您的 sh 可能不 POSIX 合规。最有可能的是 ,它是 dash 和 FreeBSD 的 /bin/sh 的祖先。您需要在您的环境中进行测试。