我有字符串变量MIN和SEC(分钟和秒)。
MIN = "1"
SEC = "34"
我想对这些进行计算。
TOTSEC = MIN * 60 + SEC
我试过了:
expr $ SEC + $ MIN * 60
结果:
expr:非数字参数
让我们知道我在自定义微型计算机上运行busybox,因此无法访问bash,bc以及其他解决方案提供的内容。
答案 0 :(得分:3)
在sh
中,我认为您的意思是POSIX shell,您最好的选择是使用Arithmetic Expansion:
$ MIN=1
$ SEC=34
$ TOTSEC=$(( MIN * 60 + SEC ))
$ printf '%d\n' "$TOTSEC"
94
然而,在csh
中,内置数学运算方式完全不同:
% 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标准。最有可能的是ash,它是dash
和FreeBSD的/bin/sh
的祖先。您需要在您的环境中进行测试。