for file in $(< list);
do
[ ! -f ${file}xxx ] && echo "x: " ${file}xxx
done
list
- это файл, содержащий список имен файлов "abc acc ...".
<
- это перенаправление - поэтому мы читаем из файла 'list', так же, как $(cat list)
.Если файл не называется «список», просто замените имя.
file
объявляется в этом операторе и итеративно привязывается ко всем этим записям в «списке».Позже он используется как $ {file}.
[ ! -f ${file}xxx ]
- это проверка, существует ли -f (ile), для abc он ищет файл abcxxx.
Но!отменяет поиск, поэтому, если такого файла не существует, вызывается echo ...
.«x:» - просто реликт отладки.
Мы можем улучшить эту часть:
for file in $(< list);
do
[ -f ${file}xxx ] || echo ${file}xxx
done
вместо 'NOT x AND y' мы можем написать 'x OR y' - значение то же самое, только короче: файл делаетсуществовать или повторить его имя.
||это короткое замыкание ИЛИ.