Linux BASH循环使用

Linux BASH循环使用,linux,bash,loops,logic,Linux,Bash,Loops,Logic,我目前正在学习BASH脚本,我有一个关于IF/WHILE/till循环语句的问题。我正在尝试了解其中哪一个更有效地检查文本语句变量的内容,如果找不到,我可以使用until语句检查变量吗?示例用法如下(我使用它来检查系统是否更新,如果没有,它将更新): 脚本正常存在,所以这很好,但我想知道我是否以最有效的方式实现了新的learnz。另外,这个循环是否会一直循环,直到$checkupdate是一个true语句?我想听听专业人士的意见 任何帮助都是帮助!谢谢你纵容我 我不会使用循环,它会检查太多次,可

我目前正在学习BASH脚本,我有一个关于IF/WHILE/till循环语句的问题。我正在尝试了解其中哪一个更有效地检查文本语句变量的内容,如果找不到,我可以使用
until
语句检查变量吗?示例用法如下(我使用它来检查系统是否更新,如果没有,它将更新):

脚本正常存在,所以这很好,但我想知道我是否以最有效的方式实现了新的learnz。另外,这个循环是否会一直循环,直到
$checkupdate
是一个true语句?我想听听专业人士的意见


任何帮助都是帮助!谢谢你纵容我

我不会使用循环,它会检查太多次,可能会使用CPU的lop。除非您知道循环不需要连续执行很多次,否则最好在这里使用cron作业。-否则,一段时间确实是最好的选择。对于loopt来说是不合适的(令人讨厌的休息等)。同意,另一个想法是O.P.可以在
循环的底部放置
睡眠300
(秒)或任何东西。祝大家好运,我只想指出分号在Bash中是不必要的,exit语句也是不必要的。IIRC Bash将以0退出,除非您以其他号码退出。我同意@Shellfish
cron
是执行任务的最佳选择。
#!/bin/bash

# Flush the YUM cache since we've added new directories and repo's
flushcache=$(yum clean all);

# Does our system need to be updated?
checkupdate=$(yum update | grep -i "No Packages marked for Update");

# This will update the system
updatesystem=$(yum update -y);

# Flush the YUM cache, to make sure we get the newest package list
echo "$flushcache";

# Using a LOOP (until-logic), lets make sure we're all updated!
if [[ $checkupdate != "No packages marked for update" ]]
then
    echo "$updatesystem"
else
    echo "They system is already updated";
fi
exit 0;