我有一个像这样的脚本:
#!/bin/bash
let sleepCount=0
while [[ $sleepCount < 15 ]]; do
let sleepCount++
sleep 1
echo $sleepCount
done
我希望它给出一个1到15的序列。但是,它给出1和2后退出了。我把15改为5,然后得到1到5。所以,看起来bash不能识别两位数,并且仅采用前导数字。那么,我该如何实现我的初衷?
顺便说一句,这是bash的一些版本信息:
bash --version GNU bash, version 4.1.2(1)-release
(x86_64-redhat-linux-gnu)
用-lt
代替<
#!/bin/bash
let sleepCount=0
while [[ $sleepCount -lt 15 ]]; do
let sleepCount++
sleep 1
echo $sleepCount
done
lt
检查,如果$sleepCount
是小于 15
编辑:
在<
执行字符串比较。为了清楚起见,请考虑以下命令
$[[ 0 < 15 ]]
$ echo $?
0
$ [[ 1 < 15 ]]
$ echo $?
0
$ [[ 2 < 15 ]]
$ echo $?
1
$ [[ 3 < 15 ]]
$ echo $?
1
$ [[ 4 < 15 ]]
$ echo $?
1
$ [[ 44 < 15 ]]
$ echo $?
1
$ [[ 44 < 5 ]]
$ echo $?
0
$ [[ "a" < "b" ]]
$ echo $?
0
$ [[ "b" < "a" ]]
$ echo $?
1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句