Bash:var在条件中为null

Bash:var在条件中为null,bash,var,Bash,Var,以下是一个例子: $ credits="29" ; echo "C=$credits" ; initial="1064" ; echo "C=$credits" ; limit=`expr $initial / 10` ; echo "C=$credits" ; if [ "$credits" -le "$limit" ] && [ ! "$initial" -eq "50" ] ; echo "C=$credits" ; then echo "C=$credtis" ; fi

以下是一个例子:

$ credits="29" ; echo "C=$credits" ; initial="1064" ; echo "C=$credits" ; limit=`expr $initial / 10` ; echo "C=$credits" ; if [ "$credits" -le "$limit" ] && [ ! "$initial" -eq "50" ] ; echo "C=$credits" ; then echo "C=$credtis" ; fi ; echo "C=$credits" ; echo "I=$initial"
C=29
C=29
C=29
C=29
C=
C=29
I=1064

$ c="29" ; echo "C=$c" ; initial="1064" ; echo "C=$c" ; limit=`expr $initial / 10` ; echo "C=$c" ; if [ "$c" -le "$limit" ] && [ ! "$initial" -eq "50" ] ; echo "C=$c" ; then echo "C=$c" ; fi ; echo "C=$c" ; echo "I=$initial"
C=29
C=29
C=29
C=29
C=29
C=29
I=1064
当var名称为“c”时,一切正常,但当它为“credits”时,我不能在if条件下使用var内容。
不明白为什么…

您的问题是两行代码中的if表达式格式不正确。具体来说,第一行包含一个不正确的
echo“C=$credits”
的末尾(如果
之间),然后

if [ "$credits" -le "$limit" ] && [ ! "$initial" -eq "50" ] ; echo "C=$credits" ; then
应该是:

if [ "$credits" -le "$limit" ] && [ ! "$initial" -eq "50" ] ; then
    echo "C=$credtis"
fi
此处重复相同的错误:

if [ "$credits" -le "$limit" ] && [ ! "$initial" -eq "50" ] ; echo "C=$credits" ; then
应该是

if [ "$credits" -le "$limit" ] && [ ! "$initial" -eq "50" ] ; then
    echo "C=$credtis"
fi

这就是导致问题的原因:
“C=$credtis”
。一个很好的例子说明了为什么“格式化代码”很重要。您犯了一个语法错误。你写了信条