我是bash脚本的新手。
我使用以下代码:
#!/bin/bash
count=0
ende="100"
while true; do
out=$(php '/var/www/testsh.php' $count)
if [ "$out"!=="$ende" ]
then
echo "$out i break"
break
fi
echo "sleeping"
sleep 10
((count++))
done
在我的PHP中:echo'100';
./ test.sh给我: 100我打破了
但是它应该输出睡眠状态,直到$out
不能为100
答案 0 :(得分:0)
"$out"!=="$ende"
被替换为100!==100
,这是一个非空字符串,[
的计算结果与-n 100!==100
相同-正确,因为它是一个非零值字符串。
"$out" != "$ende"
将被替换为100 != 100
,后者是一个具有两个操作数的运算符,并求值为false(因为它比较两个字符串)。
在另一种情况下,!=
可能会产生逻辑错误,因为它会将操作数作为字符串进行比较。幸运的是,在这种情况下,字符串的相等性与整数的相等性(要使用-ne
)是相等的,但是不必总是这样。
[
中,操作员需要他们的空间[
中,没有!==
-eq
,-ne
,-lt
,-le
,-gt
,-ge
此外,您可能喜欢seq
:
for count in $(seq 100)
do
# will happen 100 times, with `count` from `0` to `99`
done