如果语句无法按预期运行,则执行bash

时间:2019-02-18 10:03:32

标签: bash ssh

我是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

1 个答案:

答案 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