csh set: подстановочный знак ошибки не совпадает

Пытаясь найти файлы в каталогах с подстановочными знаками * и поместить имена в массив

файлы имеют похожие имена (MATCHr1, MATCHr2 ...)

проблема возникает, когда файл не существует (что возможно)

Команда set возвращает ошибку "нет соответствия" и завершает цикл

если это произойдет, как я могу заставить его обработать ошибку, перейдя к следующей итерации?

set SUBIDS = (10003 10005 10006)

foreach SUBID ($SUBIDS)

foreach SEQR ( MATCH ENC NBACK SIMON FACE )

ls -l  *${SEQR}*.nii.gz

set Array = *${SEQR}*.nii.gz

echo $Array[*]

.... остальная часть кода работает с использованием содержимого массива для создания текстовых файлов и прекрасно работает, когда *${SEQR}*.nii.gz возвращает имя файла

но терпит неудачу, когда нет совпадений с подстановочным знаком

Любая помощь будет высоко ценится

Спасибо!

1 ответ

Решение

Вы можете сделать это и проверить флаг $status (или $STATUS, зависит от вашей системы):
ls -l *${SEQR}*.nii.gz >> /dev/null ; if !$status then ...

Другие вопросы по тегам