Shell Printf: ошибка неверного номера - PullRequest
1 голос
/ 19 июня 2011

У меня есть файл с именем exfile (4 цифры в строке):

200807 0 96 200807

Я хочу прочитать этот файл и использовать все 4 числа.

Мой сценарий оболочки:

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

Ответы [ 2 ]

4 голосов
/ 19 июня 2011

Расширение скобки происходит перед расширением параметра."{${start}..${end}}" не является допустимым выражением расширения фигурной скобки и поэтому остается нерасширенным.Вместо этого используйте seq.

2 голосов
/ 19 июня 2011

Ваша for петля должна быть такой:

for((i=$2;i<=$3;i++))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...