【问题标题】:BASH: Incrementing a variable using "let"BASH:使用“let”增加变量
【发布时间】:2013-12-03 15:24:31
【问题描述】:

我想问一下你们是否知道我该如何修复我的脚本。 我想用 let 命令积极.. 有什么想法吗?

a=1
read -p "Enter any number: " COUNTER
until [ 1 -eq $COUNTER ]; do
    echo "What is the name for $COUNTER ?"
    read name1

    START=$COUNTER
    END=1
    for i in $START
    do
        echo "$i"

        echo ${name1}_$i: >> foo.sh

    done


    echo COUNTER $COUNTER
    let a\+=1

done  

【问题讨论】:

  • 你想增加 a吗?
  • 如果你想增加 a 你可以使用这个:let "a=a + 1"
  • 是的,但它不起作用......当我尝试增加 i 时:让 i=i + 1 我得到一个错误
  • 您是使用/bin/bash 还是使用/bin/sh 运行此脚本?

标签: database bash let


【解决方案1】:

有几种方法可以在 bash 中增加变量:

# one way
a=$((a+1))

# or even just
((a++))

# using "let"
let "a=a + 1"

回答你的评论,你可以做

${name1}_$((a++))

${name1}_$((++a))

取决于您是要增加变量之前还是之后echoing它。

【讨论】:

  • 正在尝试这样做... echo ${name1}_((a++)) >> foo.sh 但是:意外标记 `(' 附近的语法错误
  • @user3057030, echo ${name1}_$((a++)) >> foo.sh -- 当你想要处理算术表达式但不想要结果时使用(( )),当你想要结果时使用$(( ))(比如扩展一个变量)
  • @user3057030 没问题。您应该考虑编辑您的问题以添加您在 cmets 中提供的信息。
【解决方案2】:

在脚本的最顶部有声明:

a=1

这似乎导致了问题。变量应声明为整数,有两种实现方式:

declare -i a

let a=1

可以使用另一个 let 声明或双括号符号来完成进一步的算术运算,其中 $ 前缀并不总是必须像在 for 循环中那样使用:

for ((i=0; i<10; ++i)); do
    echo "i=$i"
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2013-05-25
    • 2015-05-20
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多