首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash中while循环的布尔类型?

问bash中while循环的布尔类型?
EN

Stack Overflow用户
提问于 2010-04-23 03:15:38
回答 5查看 23.2K关注 0票数 7

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

代码语言:javascript
复制
#!/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循环。

我做错了什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-23 03:17:27

试一试

代码语言:javascript
复制
while [ "$VAR" -eq 0 ]; do

0和1都被认为是True,因为它们不是空字符串。

票数 8
EN

Stack Overflow用户

发布于 2010-04-23 04:16:28

不需要你的helper变量,考虑使用:

代码语言:javascript
复制
while ! mysqldump .....; do :;done
票数 8
EN

Stack Overflow用户

发布于 2010-04-23 07:36:33

您可以使用/bin/true和/bin/false。虽然在这种情况下while ! mysqldump .....; do :;done (Jürgen Hötzel的解决方案)会更好,但在其他情况下使用true和false也很有用。

代码语言:javascript
复制
#!/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
done
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2693732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档