Gen*_*ode 1 string math variables csh sh
我有字符串变量 MIN 和 SEC(分钟和秒)。
MIN = "1"
SEC = "34"
Run Code Online (Sandbox Code Playgroud)
我想对这些进行计算。
TOTSEC = 最小值 * 60 + 秒
我试过:
表达式 $SEC + $MIN * 60
结果:
expr:非数字参数
让大家知道我正在自定义微型计算机上运行 busybox,因此无法访问 bash、bc 和其他解决方案提供的权限。
在 中sh,我假设您指的是POSIX shell,您最好的选择是使用算术扩展:
$ MIN=1
$ SEC=34
$ TOTSEC=$(( MIN * 60 + SEC ))
$ printf '%d\n' "$TOTSEC"
94
Run Code Online (Sandbox Code Playgroud)
然而csh,内置数学的工作原理却截然不同:
% set MIN = 1
% set SEC = 34
% @ TOTSEC = ( $MIN * 60 + $SEC )
% printf '%d\n' "$TOTSEC"
94
Run Code Online (Sandbox Code Playgroud)
根据手册页,该@命令允许执行数值计算并将结果分配给变量。
请注意,该expr命令位于 shell 外部,因此应该可以从任一 shell 中使用它。
在sh:
$ TOTSEC=$(expr "$MIN" \* 60 + "$SEC")
Run Code Online (Sandbox Code Playgroud)
并在csh:
% set TOTSEC = `expr "$MIN" \* 60 + "$SEC"`
Run Code Online (Sandbox Code Playgroud)
注意:您的sh可能不符合 POSIX 标准。最有可能的是ashdash ,它是FreeBSD的祖先/bin/sh。您需要在您的环境中进行测试。
| 归档时间: |
|
| 查看次数: |
4502 次 |
| 最近记录: |