我在一个共享的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因此,脚本可以从终止的进程中恢复,但是一旦它正确运行,新的VAR值就不会终止while循环。
我做错了什么?
发布于 2010-04-23 03:17:27
试一试
while [ "$VAR" -eq 0 ]; do0和1都被认为是True,因为它们不是空字符串。
发布于 2010-04-23 04:16:28
不需要你的helper变量,考虑使用:
while ! mysqldump .....; do :;done发布于 2010-04-23 07:36:33
您可以使用/bin/true和/bin/false。虽然在这种情况下while ! mysqldump .....; do :;done (Jürgen Hötzel的解决方案)会更好,但在其他情况下使用true和false也很有用。
#!/bin/bash
VAR=true
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=false
fi
donehttps://stackoverflow.com/questions/2693732
复制相似问题