1 概述
2 代码解读
#!/bin/csh -f # csh脚本标志set alpha = ( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ) # 用于链接文件的命名(GRIBFILE.xxx)set i1 = 1 # 第一个x在alpha的索引set i2 = 1 # 第二个x在alpha的索引set i3 = 1 # 第三个x在alpha的索引# ${#argv}表示获取传入的参数个数,${2}表示第二个参数if ( ( ${#argv} == 1 ) || ( ( ${#argv} == 2 ) && ( ${2} == "." ) ) ) thenrm -f GRIBFILE.??? >& dev/null # 清除已有的GRIBFILE.xxxforeach f ( ${1}* ) # 对传入的第一个参数(为文件夹路径)下的所有文件进行遍历ln -sf ${f} GRIBFILE.$alpha[$i3]$alpha[$i2]$alpha[$i1] # 逐一链接,-f表示如存在同名链接则删除再创建,$alpha[$i3]表示获取alpha的索引为i3的字母@ i1 ++ # i1自增if ( $i1 > 26 ) thenset i1 = 1 # 如果第一个x已经存在从A到Z共26个字母了,第二个x开始从1自增@ i2 ++if ( $i2 > 26 ) thenset i2 = 1 # 如果第二个x已经存在从A到Z共26个字母了,第三个x开始从1自增@ i3 ++if ( $i3 > 26 ) then # 如果第三个x已存在了从A到Z了,表示需要链接的气象文件数目超过该脚本能链接的最大数目了,这时候一般可以分段模拟。echo "RAN OUT OF GRIB FILE SUFFIXES!"endifendifendifend# 入参多于1个且第二个不为'.'时的情况else if ( ${#argv} > 1 ) thenrm -f GRIBFILE.??? >& dev/null # 删除已存在的链接foreach f ( $* ) # $*表示所有参数($1 $2 …$n的形式)if ( $f != "." ) then # 如果没循环到软链接的目标目录(当前目录),则依次链接ln -sf ${f} GRIBFILE.$alpha[$i3]$alpha[$i2]$alpha[$i1]@ i1 ++if ( $i1 > 26 ) thenset i1 = 1 # 如果第一个x已经存在从A到Z共26个字母了,第二个x开始从1自增@ i2 ++if ( $i2 > 26 ) thenset i2 = 1 # 如果第二个x已经存在从A到Z共26个字母了,第三个x开始从1自增@ i3 ++if ( $i3 > 26 ) then # 如果第三个x已存在了从A到Z了,表示需要链接的气象文件数目超过该脚本能链接的最大数目了,这时候一般可以分段模拟。echo "RAN OUT OF GRIB FILE SUFFIXES!"endifendifendifendifendelse if ( ${#argv} == 0 ) then # 如果未传入参数,则在屏幕上给出用法提示echo " "echo " "echo " Please provide some GRIB data to link"echo " usage: $0 path_to_grib_data/grib_data_root"echo " "echo " "endif
3 用法总结
3.1 批量链接
# 假如需要连接的气象数据均在metdata文件夹下,则可使用如下命令./link_grib.csh /metdata/ .
3.2 文件单个列出后再链接
# 假如需要连接的气象数据均在metdata文件夹下,分别为fileA和fileB,则可使用如下命令./link_grib.csh /metdata/fileA /metdata/fileB .
文章转载自微思研,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




