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 ...