我有一个在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
的尺寸的?
答案 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