我有一个名为exfile的文件(每行4个数字):
200807 0 96 200807
我想阅读此文件并使用所有4个数字。
我的Shell脚本是:
while read line
do
echo ${line}
set ${line}
echo "${1} ${2} ${3} ${4}"
declare -i start
declare -i end
start=`expr ${2} / 1`
end=`expr ${3} / 1`
for i in {${start}..${end}}
do
picnum=`printf "%03d" $i`
echo ${picnum}
done
done < exfile
错误为printf: {0..96}: invalid number
如果删除这些行:
declare -i start
declare -i end
start=`expr ${2} / 1`
end=`expr ${3} / 1`
错误是一样的。我添加这些行来将字符串转换为整数。
知道为什么吗?非常感谢。
=============================================
更新:以下代码有效:
while read line
do
echo ${line}
set ${line}
echo "${1} ${2} ${3} ${4}"
for i in $(seq ${2} ${3})
do
picnum=`printf "%03d" $i`
echo ${picnum}
done
done < exfile
答案 0 :(得分:4)
支撑扩展在参数扩展之前发生。 "{${start}..${end}}"
不是有效的大括号扩展表达式,因此未展开。请改用seq
。
答案 1 :(得分:2)
您的for
循环应该是这样的:
for((i=$2;i<=$3;i++))