【问题标题】:Bash: var null in a conditionBash:条件中的var null
【发布时间】:2014-07-17 08:43:16
【问题描述】:

示例如下:

$ 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 name 为“c”时,一切正常,但当它是“credits”时,我不能在 if 条件中使用 var 内容。 不明白为什么...

【问题讨论】:

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

标签: bash var


【解决方案1】:

您的问题是两行代码中的 if 表达式格式不正确。具体来说,第一行在if 的末尾和then 之间包含一个不正确的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

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 2010-10-29
    • 1970-01-01
    • 2023-03-24
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2020-10-23
    相关资源
    最近更新 更多