Linux 如何在bashshell脚本中的while语句中编写if语句?

Linux 如何在bashshell脚本中的while语句中编写if语句?,linux,bash,shell,if-statement,Linux,Bash,Shell,If Statement,我目前在下面的bashshell脚本中遇到了一些简单的语法问题。我不确定将if语句嵌套到while语句中的语法是什么,或者是否可以使用bashshell脚本(linux中的新功能): #/bin/bash myCombo=$((随机%99999+10000)); echo${myCombo}; myCracker=00000; 而[($myCracker你的循环有很多地方出了问题。我在下面做了一些改进: while (( myCracker <= 99999 )); do if (

我目前在下面的bashshell脚本中遇到了一些简单的语法问题。我不确定将if语句嵌套到while语句中的语法是什么,或者是否可以使用bashshell脚本(linux中的新功能):

#/bin/bash
myCombo=$((随机%99999+10000));
echo${myCombo};
myCracker=00000;

而[($myCracker你的循环有很多地方出了问题。我在下面做了一些改进:

while (( myCracker <= 99999 )); do
    if (( myCracker == myCombo )); then
        echo "The combination is $myCracker !"
        break
    else
        (( ++myCracker ))
    fi
done

中断
仍然很有用,因为它可以防止循环不必要地继续。

您的循环有很多问题。我在下面做了一些改进:

while (( myCracker <= 99999 )); do
    if (( myCracker == myCombo )); then
        echo "The combination is $myCracker !"
        break
    else
        (( ++myCracker ))
    fi
done

中断
仍然很有用,因为它可以防止循环不必要地继续。

您的循环有很多问题。我在下面做了一些改进:

while (( myCracker <= 99999 )); do
    if (( myCracker == myCombo )); then
        echo "The combination is $myCracker !"
        break
    else
        (( ++myCracker ))
    fi
done

中断
仍然很有用,因为它可以防止循环不必要地继续。

您的循环有很多问题。我在下面做了一些改进:

while (( myCracker <= 99999 )); do
    if (( myCracker == myCombo )); then
        echo "The combination is $myCracker !"
        break
    else
        (( ++myCracker ))
    fi
done

中断
仍然很有用,因为它可以防止循环不必要地继续进行。

如果进行简单的比较,也可以使用扩展测试而不是算术上下文。它们应该更快一些,并且更常见

while [[ $myCracker -le 99999 ]]; do
    if [[ $myCracker -eq $myCombo ]]; then
        echo "The combination is ${myCracker}!"
        break
    else
        ((myCracker++))
    fi
done

如果你做简单的比较,你也可以使用扩展测试而不是算术上下文。它们应该快一点,而且更常见

while [[ $myCracker -le 99999 ]]; do
    if [[ $myCracker -eq $myCombo ]]; then
        echo "The combination is ${myCracker}!"
        break
    else
        ((myCracker++))
    fi
done

如果你做简单的比较,你也可以使用扩展测试而不是算术上下文。它们应该快一点,而且更常见

while [[ $myCracker -le 99999 ]]; do
    if [[ $myCracker -eq $myCombo ]]; then
        echo "The combination is ${myCracker}!"
        break
    else
        ((myCracker++))
    fi
done

如果你做简单的比较,你也可以使用扩展测试而不是算术上下文。它们应该快一点,而且更常见

while [[ $myCracker -le 99999 ]]; do
    if [[ $myCracker -eq $myCombo ]]; then
        echo "The combination is ${myCracker}!"
        break
    else
        ((myCracker++))
    fi
done


[我添加了一个
break
,如果您不喜欢,可以回滚]这确实需要一个
for
循环
:)
。非常感谢。这澄清了我对Bash的许多语法问题,我觉得有了这些新知识,Bash对我来说会容易得多。@gniourfgniourf谢谢,我只是在添加类似的东西![我添加了一个
break
,这似乎很合适,如果您不喜欢,请回滚]这真的需要一个
循环
:)
。非常感谢。这澄清了我对Bash的许多语法问题,我觉得有了这些新知识,Bash对我来说会容易得多。@gniourf\gniourf谢谢,我正在添加类似的东西![我添加了一个
break
,如果您不喜欢,请回滚]这真的需要一个
循环
:)
。非常感谢。这澄清了我对Bash的许多语法问题,我觉得有了这些新知识,Bash对我来说会容易得多。@gniourf\gniourf谢谢,我正在添加类似的东西![我添加了一个
break
,如果您不喜欢,请回滚]这真的需要一个
循环
:)
。非常感谢。这澄清了我对Bash的许多语法问题,我觉得有了这些新知识,Bash对我来说会容易得多。@gniourf\gniourf谢谢,我只是在添加类似的东西!这为我的技能增加了更多的知识-bag.非常感谢您的帮助!看起来我试图在不完全了解某些操作的语法规则的情况下将这些语法混合到一个大的混乱集群中。我建议对所有操作都坚持使用扩展测试,并且只对算术操作使用算术上下文,包括递增1。这是because扩展测试更常见,同时处理数字(-eq)和字符串(=)。
[
隐式地为数字运算符的右侧和左侧引入了算术上下文。这会导致计算为字符串(而不是数字)的变量出现问题因为他们第二次被评估,结果是
0
。比较
foo=bar;[[$foo-eq 0]];echo$?
bar=5;foo=bar;[$foo-eq 0]];echo$?
foo=bar;[$foo-eq 0];echo$?
。不,你错了。
one=“text”
two=“$one”
two=
two=
=“$two”];echo$?#0
[[“$one”=“$three”]];echo$?#1
应使用-eq进行算术比较,以及“=”(或“=”,其作用相同)对于字符串。这为我的技能包增加了更多的知识。非常感谢您的帮助!看起来我在不完全了解某些操作的语法规则的情况下,试图将这些语法混合到一个大的混乱集群中。我建议对所有操作都坚持使用扩展测试,并且仅对算术使用算术上下文操作,包括递增1。这是因为扩展测试更常见,同时处理数字(-eq)和字符串(=)。
[
隐式地为数字运算符的右侧和左侧引入了算术上下文。这会导致计算为字符串(而非数字)的变量出现问题因为他们第二次被评估,结果是
0
。比较
foo=bar;[[$foo-eq 0]];echo$?
bar=5;foo=bar;[$foo-eq 0]];echo$?
foo=bar;[$foo-eq 0];echo$?
。不,你错了。
one=“text”
two=“$one”
two=
two=
=“$two”];echo$?#0
[“$one”=“$three”];echo$?#1
您应该使用-eq进行算术比较,而“=”(或“=”,其作用相同)用于字符串。这为我的技能包增加了更多的知识。非常感谢您的帮助!看起来我正试图将一些语法混合到一个大的语法中