一个在bash for循环中改变值的变量

时间:2012-10-11 15:05:20

标签: bash echo increment

  

可能重复:
  How can I add numbers in a bash script

我有一个在for循环中改变值的变量:

for i in {1..10..1}
  do
    while ((count < max+1))
      do 
        echo $count >> /directory/outfile_${max}.txt
        ((count++))
      done
    max=$max+100
  done

十个outfiles应该有“outfile_100.txt”,“outfile_200.txt”等名称。

但接下来发生的事情就是它们变得像“outfile_100 + 100 + 100 .... txt”

我是如何调整max的尺寸的?

4 个答案:

答案 0 :(得分:3)

max = $ max + 100是字符串操作。你说,“替换变量$ max表示的字符串,然后取该字符串,字符串”+100“,并将其赋值给变量max。”例如,您可以说:

max=IamSoSexy+100

因为shell没有任何类型,只有字符串。您正在寻找的是一个将其参数解释为数字的命令。你想要:

let max=$max+100

因为“let”命令解除了。

答案 1 :(得分:2)

您尝试计算算术表达式,这不会发生在简单赋值中。使用max = $(($ max + 100))

答案 2 :(得分:1)

或使用expr

max=`expr $max + 100`

答案 3 :(得分:1)

您还可以在max上设置整数属性,以便自动对其执行算术评估。

declare -i max
for i in {1..10..1}
do
    while ((count < max+1))
    do 
        echo $count >> /directory/outfile_${max}.txt
        ((count++))
    done
    max+=100
done