我正在开发一个sh脚本,我在一个WHILE循环中,每次迭代变量都会增加,我想每五次迭代保存一个文件.
我通常做的(比如用C语言)就是做一个if ( n % 5 == 0)测试,但我不知道这是否可行......?如果不是,有没有人有任何想法可以完成工作?
干杯!
小智 40
如果你的sh真的是sh而不仅仅是bash以sh运行那么这将很好地工作
if [ `expr $n % 5` -eq 0 ]
then
# do something
fi
Run Code Online (Sandbox Code Playgroud)
如果你的SH真的来砸然后把你的测试,(( ))像这样
if (( $n % 5 == 0 ))
then
# do something
fi
Run Code Online (Sandbox Code Playgroud)
ziu*_*ziu 16
在shell中进行数学运算时应该使用bc
if [ `echo "3 % 2" | bc` -eq 0 ]
Run Code Online (Sandbox Code Playgroud)
小智 6
if (($n%5==0))
then
# do something
fi
Run Code Online (Sandbox Code Playgroud)
反引号现在被认为已弃用(许多进一步的注释),所以我建议切换到$(( ... ))或$( ... )构造。
两者expr(手册页),和bc(手册页)是外部命令,并且这样会导致在比矿或上述那些更复杂的例子一些可测量的减速。此外,已经有一种方法可以轻松避免它们(两者)。此外,例如,默认情况下它们可能并非在所有系统上都可用。
(在某些条件下可能不完美,我只测试了基本场景。)
最简单的同时可移植且符合 POSIX 的正确代码(无 Bashisms(Greg 的 Wiki 介绍如何将 Bash 片段重写为 POSIX);(POSIX 维基百科概述))来测试数字的奇怪性(例如)如下:
#!/bin/sh
n=10
if [ $(( n % 2 )) -eq 0 ]; then
printf '%s\n' "Number $n is Even"
else
printf '%s\n' "Number $n is Odd"
fi
Run Code Online (Sandbox Code Playgroud)
当然,您可以在那里测试任何模数,而不仅仅是数字是偶数/奇数。
| 归档时间: |
|
| 查看次数: |
79038 次 |
| 最近记录: |