У меня есть цикл if, который не совсем делает то, что он должен. Я хочу, чтобы цикл if искал конкретный файл «if (-f JUN * [0-9] .acc $ RUN.nc)», и если он находит его, продолжайте делать отступы. Если нет, он должен спрыгнуть через конец и продолжить чтение скрипта.странное поведение оператора If в (t) csh
На данный момент он ищет файл ok (он смог пройти первый оператор «if» и сделать правильные вещи, когда найдет первый файл), но как только он не найдет что он ищет, он останавливает весь сценарий и возвращает ошибку:
DEC * [0-9] .accE01Ccek0kA.nc: Совпадений нет.
Я пробовал различные комбинации if: ... else: pass и if ... then ... endif с двоеточиями и тому подобное в разных местах, но я все еще не могу заставить его работать.
Спасибо за помощь!
setenv RUN $1 # Run number
setenv BDIR /discover/nobackup/cekrause
setenv MONDATA $BDIR/$RUN/data_files # Target directory
setenv DATADIR $BDIR/$RUN # Run directory
setenv EXECDIR /discover/nobackup/projects/giss/exec
cd $DATADIR
#### pdE JUN and DEC files ####
if (-f JUN*[0-9].acc$RUN.nc) then
mkdir tempplot
cp JUN*[0-9].acc$RUN.nc tempplot
cd tempplot
pdE JUN*[0-9].acc$RUN.nc
endif
cd $DATADIR
if (-f DEC*[0-9].acc$RUN.nc) then
mkdir tempplot
cp DEC*[0-9].acc$RUN.nc tempplot
cd tempplot
pdE DEC*[0-9].acc$RUN.nc
endif
(do some other things)
exit
В качестве альтернативы введите 'info bash' в своем терминале. – devnull
BTW: нет такой вещи, как «цикл if». Оператор 'if' не работает. Если вам нужен цикл, используйте 'while'. – Uwe
@Mat Очевидно, что Claire использует csh вместо bash для выполнения скрипта (bash уже терпит неудачу, если встретится с линией 'setenv'). Тэг «bash» неверен. – Uwe