LINUX.ORG.RU

Проверить в bash: существуют ли все указанные файлы

 


0

1
cat list.txt
a1
b2
c3


Как можно сделать:
если существуют все файлы из списка list.txt, присвоить переменной значение z=0, иначе z=1.
Спасибо.



Последнее исправление: carabo (всего исправлений: 2)

проверить по очереди и применить логические AND + NOT

anonymous
()
list="`cat list.txt`"

for i in ${list} ; do
[ -e $i ] || { status="1" ; break 1 ; }
done
status="0"

Не проверял, но должно работать.

IPR ★★★★★
()
Последнее исправление: IPR (всего исправлений: 1)
Ответ на: комментарий от IPR

anonymous
IPR

Спасибо, работают оба варианта.

IPR
status=«0» должно быть выше цикла for.

Будьте так любезны, дайте ссылку на мануал, где объясняется работа такой конструкции: использование оператора || в цикле.

carabo
() автор топика
Ответ на: комментарий от carabo

man bash

      AND and OR lists are sequences of one of more  pipelines  separated  by
       the  &&  and  || control operators, respectively.  AND and OR lists are
       executed with left associativity.  An AND list has the form

              command1 && command2

       command2 is executed if, and only if, command1 returns an  exit  status
       of zero.

       An OR list has the form

              command1 || command2

       command2  is  executed  if and only if command1 returns a non-zero exit
       status.  The return status of AND and OR lists is the  exit  status  of
       the last command executed in the list.

anonymous
()
Ответ на: комментарий от IPR

Какая разница, где присваивать значение? Можно и в конце.

Тогда

echo $status
всегда возвращает 0, проверил.

carabo
() автор топика
Ответ на: комментарий от carabo

А, я затупил, цикл прерывается, а не выходит из скрипта.

IPR ★★★★★
()
Ответ на: комментарий от IPR

<условие>

Какое еще условие?

[ -e $filename ] --- это не условие, а команда test возвращающая errno (код завершения)

anonymous
()
Ответ на: комментарий от anonymous

ты ещё мог приплести животноводство, или ещё какую лишнюю сущность, о которой недавно услышал, не имеющую к теме прямого отношения

anonymous
()
ls `cat list.txt` >/dev/null 2>&1 || z=1 && z=0
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.