Один файл или несколько
Доброе время суток!
Есть переменная FILES.
Как узнать, содержится ли в ней единичное имя файла или же целый массив имен?
Использую sh.
За последние 60 дней ни разу не выходила
Сайт листа:
http://www.linuxrsp.ru
Открыт:
25-07-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.linux.discuss-list@subscribe.ru
Адрес
модератора: comp.soft.linux.discuss-owner@subscribe.ru
Доброе время суток!
Есть переменная FILES.
Как узнать, содержится ли в ней единичное имя файла или же целый массив имен?
Использую sh.
Доброе время суток!
Wed, 09 Mar 2005 23:40:57 +0200 Yura Kalinichenko писал(а):
Собственно из-за этого и написал :)
Не знаю, "хорошо" это или нет, но можно например так:
FILES=`echo $FILES | sed s/"\ "//g`
set -- $FILES
case $# in
0) echo "There are no files" ;;
1) echo "There is one file" ;;
*) echo "There are $# files" ;;
esac
В сообщении от 1110432129 секунд после начала Эпохи Unix Вы написали:
И теперь всегда будет только один файл :)
Как наполняется переменная FILES? Если в ней имена уже экранированы
(shell quoted), то проблем с конструкцией
set -- $FILES
case $# in
0) echo "There are no files" ;;
1) echo "There is one file" ;;
*) echo "There are $# files" ;;
esac
не будет. А если не экранированы, то увы после
FILES=`echo $FILES | sed s/"\ "//g`
мы получим 0 или 1 файл.
P.S. Список с экранированными именами файлов можно получить,
например с помощью `ls -Q'.
Доброе время суток!
Fri, 25 Mar 2005 05:32:39 +0200 Konstantin Korikov писал(а):
Макроподстановка в mc.
Пардон. В моем случае:
sed s/'\\ '//g
А это вариант на все случаи жизни :) Спасибо.
В сообщении от 1111770860 секунд после начала Эпохи Unix Вы написали:
Ну дык они там уже экранированы.
On Срд, 2005-03-09 at 21:34 +0300, Терновых Илья wrote:
Например, так:
set -- $FILES
case $# in
0) echo "There are no files" ;;
1) echo "There is one file" ;;
*) echo "There are $# files" ;;
esac
Правда, если имя файла содержит пробелы - дело несколько усложняется на
этапе формирования FILES.