0

可能重复:
如何在 bash 脚本中添加数字

我有一个在 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

十个输出文件的名称应为“outfile_100.txt”、“outfile_200.txt”等。

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

是我调整大小的方式max吗?

4

4 回答 4

3

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

max=IamSoSexy+100

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

let max=$max+100

因为“让”命令完成了提升。

于 2012-10-11T15:11:19.430 回答
2

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

于 2012-10-11T15:08:42.797 回答
1

或者使用 expr

max=`expr $max + 100`
于 2012-10-11T15:10:00.550 回答
1

您还可以将整数属性设置为 on 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
于 2012-10-11T15:52:17.113 回答