【问题标题】:ksh - var = $var + 1 returns 1+1 stringksh - var = $var + 1 返回 1+1 字符串
【发布时间】:2023-11-25 02:35:01
【问题描述】:

我的代码:

RETVAL1=-1
if [ $RETVAL1 -le 0 ] ; then
  RETVAL1=$RETVAL1+1
  print "RETVAL1: $RETVAL1"
fi

它会打印出RETVAL1: -1+1 请问大家知道怎么修吗?

【问题讨论】:

    标签: string shell integer increment ksh


    【解决方案1】:

    要执行算术运算,请使用let 命令:let RETVAL1=RETVAL1+1

    此外,将表达式括在$(()) 之间也会将其解释为算术运算。 echo $((RETVAL+1))

    【讨论】:

      【解决方案2】:

      使用let 命令。该命令执行算术运算。 + 运算符执行字符串加法。

      像这样使用它:

      let RETVAL1=RETVAL1+1
      

      您还可以使用expr 命令获得更通用的表达式。

      【讨论】:

      • 伙计,非常感谢!我想我应该多学一点ksh。 (主要是为了在尝试一个小时后提出这样的问题时不要看起来像个白痴)
      【解决方案3】:

      一种方式:

      ((RETVAL1=RETVAL1+1))
      

      【讨论】:

        【解决方案4】:

        Shell 变量的工作方式与大多数编程语言中的变量不同。如果要将 1 加到存储在变量中的整数,则需要一个算术表达式。我不是ksh 向导,但通常的 Bourne-derived-shell 算术表达式语法是:

        RETVAL1=$((RETVAL1 + 1))
        

        ((RETVAL1 = RETVAL1 + 1))
        

        【讨论】: