我有一个名为 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
最佳答案
大括号扩展发生在参数扩展之前。 "{${start}..${end}}"
不是有效的大括号扩展表达式,因此未扩展。请改用 seq
。
关于linux - shell Printf : Invalid Number error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400249/