Страница 1 из 1
цикл for и пробелы
Добавлено: 2013-05-29 13:49:20
bagas
Добрый день.
Не пойму почему мои пробелы не экранируются?
Имею такой скрипт.
Код: Выделить всё
#!/bin/sh
XLS=`ls /mnt/share/ZP_списки/*.xls`
SOR="/mnt/share/ZP_списки"
DES="/mnt/share/ЗП/"
BIN="/usr/local/bin/xls2csv"
##################
for f in "$XLS";
do
TIME=`date +"%H-%M-%S"`
RAN=`grep -m2 -ao '[0-9]' /dev/urandom | head -n1`
xls2csv -d cp866 -q 0 "$f" > "$SOR/Реестр-$RAN-от-$TIME.txt"
done
Код: Выделить всё
[code]# ls /mnt/share/ZP_списки/*.xls
/mnt/share/ZP_списки/ОО при реестр №1 от 22.01.2013 от новый.xls
/mnt/share/ZP_списки/реестр №4от 21.05.2013.xls
[/code]
Re: цикл for и пробелы
Добавлено: 2013-05-29 14:12:47
Bayerische
Код: Выделить всё
#!/bin/sh
XLS=`ls /mnt/share/ZP_списки/*.xls`
SOR="/mnt/share/ZP_списки"
DES="/mnt/share/ЗП/"
BIN="/usr/local/bin/xls2csv"
SAVEIFS=$IFS
IFS='
'
##################
for f in "$XLS";
do
TIME=`date +"%H-%M-%S"`
RAN=`grep -m2 -ao '[0-9]' /dev/urandom | head -n1`
xls2csv -d cp866 -q 0 "$f" > "$SOR/Реестр-$RAN-от-$TIME.txt"
done
IFS=$SAVEIFS
exit 1
Re: цикл for и пробелы
Добавлено: 2013-05-29 14:33:38
bagas
Bayerische писал(а):Код: Выделить всё
#!/bin/sh
XLS=`ls /mnt/share/ZP_списки/*.xls`
SOR="/mnt/share/ZP_списки"
DES="/mnt/share/ЗП/"
BIN="/usr/local/bin/xls2csv"
SAVEIFS=$IFS
IFS='
'
##################
for f in "$XLS";
do
TIME=`date +"%H-%M-%S"`
RAN=`grep -m2 -ao '[0-9]' /dev/urandom | head -n1`
xls2csv -d cp866 -q 0 "$f" > "$SOR/Реестр-$RAN-от-$TIME.txt"
done
IFS=$SAVEIFS
exit 1
Теже яйца.
Вот лог выполнения.
Код: Выделить всё
# sh -vvv new_cash
#!/bin/sh
XLS=`ls /mnt/share/ZP_списки/*.xls`
SOR="/mnt/share/ZP_списки"
DES="/mnt/share/ЗП/"
BIN="/usr/local/bin/xls2csv"
SAVEIFS=$IFS
IFS=''
for f in "$XLS";
do
TIME=`date +"%H-%M-%S"`
RAN=`grep -m2 -ao '[0-9]' /dev/urandom | head -n1`
xls2csv -d cp866 -q 0 "$f" > "$SOR/Реестр-$RAN-от-$TIME.txt"
done
/mnt/share/ZP_списки/ОО при реестр №1 от 22.01.2013 от новый.xls
/mnt/share/ZP_списки/реестр №4от 21.05.2013.xls: No such file or directory
IFS=$SAVEIFS
exit 0
#
Код: Выделить всё
# ls "/mnt/share/ZP_списки/реестр №4от 21.05.2013.xls"
/mnt/share/ZP_списки/реестр №4от 21.05.2013.xls
Re: цикл for и пробелы
Добавлено: 2013-05-29 14:41:37
kpp
Код: Выделить всё
...
SAVEIFS="${IFS}"
IFS='
'
for f in ${XLS}
do
...
done
IFS="${SAVEIFS}"
...
Если система Фря (или же не Фря, но есть утилита jot),
Код: Выделить всё
RAN=`grep -m2 -ao '[0-9]' /dev/urandom | head -n1`
лучше заменить на
Re: цикл for и пробелы
Добавлено: 2013-05-29 15:15:00
bagas
kpp писал(а):Код: Выделить всё
...
SAVEIFS="${IFS}"
IFS='
'
for f in ${XLS}
do
...
done
IFS="${SAVEIFS}"
...
Если система Фря (или же не Фря, но есть утилита jot),
Код: Выделить всё
RAN=`grep -m2 -ao '[0-9]' /dev/urandom | head -n1`
лучше заменить на
Спасибо огромное. Вышло все замечательно.
Система фряя. про утилиту jot не слышал.
Ты прав, в моем случае jot лучше использовать.
А напомни что делаю скобки {}?
Re: цикл for и пробелы
Добавлено: 2013-05-29 15:17:41
kpp
bagas писал(а):А напомни что делаю скобки {}?
Скобки дисциплинируют

и в будущем избавят от непонятных проблем.
В некоторых случаях без них вообще не обойтись - нужны для отделения имени переменной от чего-то еще.