Отправляет email-рассылки с помощью сервиса Sendsay

Один файл или несколько

Доброе время суток!

Есть переменная FILES.
Как узнать, содержится ли в ней единичное имя файла или же целый массив имен?
Использую sh.

Ответить   Терновых Илья Wed, 9 Mar 2005 21:34:51 +0300 (#330151)

 

Ответы:

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.

Ответить   Yura Kalinichenko Wed, 09 Mar 2005 23:40:57 +0200 (#330259)

 

Доброе время суток!
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

Ответить   Терновых Илья Thu, 10 Mar 2005 07:22:09 +0300 (#330303)

 

В сообщении от 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'.

Ответить   Konstantin Korikov Fri, 25 Mar 2005 05:32:39 +0200 (#339416)

 

Доброе время суток!
Fri, 25 Mar 2005 05:32:39 +0200 Konstantin Korikov писал(а):

Макроподстановка в mc.

Пардон. В моем случае:

sed s/'\\ '//g

А это вариант на все случаи жизни :) Спасибо.

Ответить   Терновых Илья Fri, 25 Mar 2005 19:14:20 +0300 (#339773)

 

В сообщении от 1111770860 секунд после начала Эпохи Unix Вы написали:

Ну дык они там уже экранированы.

Ответить   Konstantin Korikov Sat, 26 Mar 2005 03:42:36 +0200 (#339996)