【发布时间】:2013-05-23 07:38:21
【问题描述】:
我有一个 if 循环并没有完全按照它应该做的那样做。 我希望 if 循环查找特定文件“if (-f JUN*[0-9].acc$RUN.nc)”,如果找到,则继续执行缩进的操作。 如果没有,它应该跳过 endif 并继续阅读脚本。
目前,它正在寻找文件 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。 -
顺便说一句:没有“if循环”之类的东西。
if语句不会循环。如果你想要一个循环,请使用while。 -
@Mat 很明显,Claire 使用 csh 而不是 bash 来执行脚本(当遇到
setenv行时,bash 已经失败了)。 “bash”标签是错误的。
标签: if-statement csh