Bash-shell脚本修改和建议

时间:2014-07-03 08:47:58

标签: bash shell loops automation

我是shell脚本的新手,我正在尝试自动化一个进程。 我认为结构还可以,但我注意到我认为它不应该存在

# STEP 1#
echo " Untar the file s"
time tar -xf $tarfiles
time tar -xf *.tar

#STEP 2#
fname=(wnd10m.gdas.2010*.grb2)
echo " convert into .nc "
cdo -f nc copy $fname $fname.nc

#STEP 3#
ofile1=$fname.nc
echo "re-format into structured grid 0.5x0.5"
cdo remapbil,r720x361 $ofile1 remap$R.nc

#STEP 4#
ofile2=$remapR.nc
echo "produce desired mesh"
cdo sellonlatbox,lon1,lon2,lat1,lat2 $ofile2 $grid.nc

#STEP 5#
ofile3=$grid.nc
echo "merge the files based on tstep"
cdo mergetime $ofile3 final$R.nc

执行步骤1和步骤2,尽管它只操作和更改.tar文件中包含的文件之一。

到目前为止,该过程给出了步骤1& 2,但在第3步中,我没有将新文件作为remap$R.nc,而R是一个额外的结尾,因此生成的内容不会与上一步中生成的其他内容混淆。

在我运行之后,这就是我得到的

convert into .nc 

cdo copy: Processed 987365376 values from 2 variables over 744 timesteps ( 234.66s )
re-format into structured grid 0.5x0.5

cdo remapbil: Processed 987365376 values from 2 variables over 744 timesteps ( 53.59s )
produce desired mesh

Error (cdo sellonlatbox) : Output file name .nc is equal to input file name on position 1!

merge the files based on tstep

cdo mergetime: Open failed on >.nc<
No such file or directory

我正在尝试对我的文件进行解密但不知道我做错了什么,因为该过程应该处理大量文件将它们转换为每个阶段我非常注意分配正确和不同的fnames

如果你能看看并给我你的意见,我将不胜感激。

P.S。 cdo是我正在使用的代码,所以你可以忽略它,我的重点是过程本身

感谢

3 个答案:

答案 0 :(得分:2)

$remapRremap$R不同。移动你的美元符号。

您可以使用set -xv调试脚本。

答案 1 :(得分:1)

比较这些:

cdo remapbil,r720x361 $ofile1 remap$R.nc

ofile2=$remapR.nc

这看起来像一个古典错字

答案 2 :(得分:0)

大家好,我作为问题的延续,用户@Bushmills帮助了我很多(谢谢!!!)

我附上了我所做的建议代码,经过测试并且有效,所以希望其他用户(像我这样的新手)可能会觉得这很有用。

file="wnd10m.gdas."
year='2010'
month='01 02'
ext="grb2"

for((y=$year;y<=$year;y++));
do
    for m in $month
    do
    fname=$file$y$m.$ext

    #STEP 1#
    cdo -f nc copy $fname $fname.nc

    #STEP 2#
    ofile1=$fname.nc

    cdo remapbil,r720x361 $ofile1 R$ofile1 #produces a file with the name of the R+ofile1

例如,如果前一个文件名为FILE,则该命令将生成一个名为RFILE的新文件         #STEP 3#         ofile2 =($ R * .NC) 使用以R

开头的所有文件
    cdo sellonlatbox,$lon1,$lon2,$lat1,$lat2 $ofile2 grid_$ofile2

    done
done

感谢您的帮助