linux - shell Printf : Invalid Number error

标签 linux shell command-line

我有一个名为 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/

相关文章:

linux - bash - 使用 int 变量作为引用传递给函数的位置参数的索引

java - C printf 未按预期从终端工作

c++ - 移植Qt程序(Windows到linux)段错误

linux - Bash 脚本在目录中保留 'x' 个字符?

linux - 风流与netcoreapp2.0

python - 列表中的目录内容

linux - 如果超过 250 个字符,则替换第一行 php 脚本

linux - 如何在linux中生成文本和图像的pdf文件?

bash - 如何限制目录以在其中保留一定数量的文件

bash - 带空格的 Shell 变量,引用单个命令行选项