bash中while循环的布尔类型?

use*_*841 7 bash command-line

我在共享的Web主机上有一个cron脚本,偶尔会被杀死.我想在bash中创建一个循环,如果它被杀死,它会再次尝试,因为大多数时候它会成功.我在使用存储布尔值的语法时遇到问题:P

#!/bin/bash
VAR=0;

while [ $VAR ]; do
    if nice -19 mysqldump -uuser -ppassword -h database.hostname.com --skip-opt --all --complete-insert --add-drop-table database_name > ~/file/system/path/filename.sql; then
        VAR=1;
    fi
done
Run Code Online (Sandbox Code Playgroud)

所以脚本从一个被杀死的进程恢复正常,但一旦它正常运行,新VAR值不会杀死while循环.

我究竟做错了什么?

ken*_*ytm 7

尝试

while [ "$VAR" -eq 0 ]; do
Run Code Online (Sandbox Code Playgroud)

0并且1都被认为是True,因为它们不是空字符串.


Jür*_*zel 6

你不需要辅助变量,考虑使用:

while ! mysqldump .....; do :;done
Run Code Online (Sandbox Code Playgroud)

  • 无操作:只是为了满足bash语法. (2认同)