1 概述

在WPS中,ungrib.exe解析气象数据前会先链接GRIB气象数据(当然,不链接也行,拷贝过来也可以运行,但是非常浪费存储资源,因此使用软链接)为GRIBFILE.xxx,链接气象数据的脚本为link_grib.csh,以下对该脚本进行解读,加深对该过程的理解。

2 代码解读

link_grib.csh的代码内容为(#注释部分为解读):

#!/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!"endifendifendifendifend
else 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 用法总结

根据上面对源码的分析,可以知道最多能链接262626=17576个文件(夹),一般都是足够了的。主要有两种链接方法

3.1 批量链接

输入两个参数,第一个参数为要连接的气象数据的文件夹,第二个参数为链接目的地(当前位置,即’.')。例:

# 假如需要连接的气象数据均在metdata文件夹下,则可使用如下命令
./link_grib.csh /metdata/ .

3.2 文件单个列出后再链接

输入多于两个参数,第一个至倒数第二个参数为要连接的气象数据的文件,最后一个参数为链接目的地(当前位置,即’.')。例:

# 假如需要连接的气象数据均在metdata文件夹下,分别为fileA和fileB,则可使用如下命令
./link_grib.csh /metdata/fileA  /metdata/fileB .

“微思研”微信公众号,用于分享个人学习及工作生活趣事。

【数值模型系列】link_grib.csh脚本解读相关推荐

  1. shell编程系列26--大型脚本工具开发实战

    shell编程系列26--大型脚本工具开发实战大型脚本工具开发实战拆分脚本功能,抽象函数1.function get_all_group 返回进程组列表字符串2.function get_all_pr ...

  2. 关于/etc/init.d/nfs脚本解读中的疑问解答

    解答学生关于/etc/init.d/nfs脚本解读中的疑问 一份老男孩的早期讲课历史解答,昨天整理NFS课程发现. 解读/etc/init.d/nfs脚本是给学生留的一个课后作业. 1. killpr ...

  3. 机器学习、数据科学与金融行业 系列九:巴塞尔协议解读(1)介绍

    机器学习.数据科学与金融行业 系列九:巴塞尔协议解读(1)介绍 本篇不同于本系列文章中的其他文章,本文只是笔者研读巴塞尔标准后所整理的其主要内容,侧重于计算RWA方面.现分享出来,请读者指正.     ...

  4. linux下使用.csh脚本自动化下载GFS气象预报数据

    在linux环境下使用脚本实现对于WRF模式的初始场强迫场资料–GFS数据进行自动化下载 GFS(Global Forecast System–全球预报系统) GFS(Global Forecast ...

  5. 狂飙胶皮ajax字母是什么意思,狂飙系列套胶的性能解读

    注册乒乓网,名师1对1指导! 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 狂飙系列套胶的性能解读 简介:为了适应无机大球时代而推出的新一代高粘性速度型套胶,韧性和弹性平衡的胶皮配方,中小力 ...

  6. DDOS-deflate工具:ddos.sh脚本解读(预防DDOS攻击脚本)

    DDOS-deflate工具:ddos.sh脚本解读(预防DDOS攻击脚本) [root@server ddos]# cat ddos.sh #!/bin/sh ################### ...

  7. kaldi单音素模型训练 - train_mono.sh脚本解读

    提示:本文适合kaldi的初学者,但最好有过运行kaldi的经验,并且大概了解EM算法.本文比较细致地对train_mono.sh脚本进行了解读,包括其源码,输入输出,以及对输出文件的内容都有详细的解 ...

  8. adobe脚本的框架_Adobe 系列软件插件脚本开发

    一直不知道Adobe系列软件是有大量接口,而且对第三方插件开发是非常友好的,直到前段时间,帮助做InDesign的排版,发现大量重复的动作,于是想利用程序帮生成修改idml,然后偶然才发现InDesi ...

  9. python为所欲为系列-制作游戏脚本

    在游戏脚本制作方面,大家常常听说易语言.TC.按键精灵,可惜知python者甚少. 而本菜鸟就是这么钟爱python,那还能咋滴,花点时间研究研究python怎么为所欲为呗. 经过几天的努力,终究还是 ...

最新文章

  1. 女朋友羞辱我一线程序员35岁后没出路?该回二线发展!我没忍住,吼她两句!我错了吗?...
  2. 用C语言解“两个数的简单计算器”题
  3. 循环神经网络-Dropout
  4. jquery实现滚动条滚动到一定高度导航固定不变
  5. 打破“创新困局”,让你的企业创意盎然的六个新角色
  6. DTrace Tools
  7. Python使用Scrapy爬虫框架爬取天涯社区小说“大宗师”全文
  8. hadoop jar
  9. 更改SQL数据库的繁体数据为简体
  10. 数独的优化回朔算法(二)
  11. 全栈开发工程师微信小程序-中
  12. python利用you-get下载视频
  13. 红孩儿编辑器的模块设计6
  14. 华尔街远邻 | 解读国际清算银行对加密货币的暧昧态度
  15. Android:规范命名,让合作更加愉快
  16. Flex弹性盒子详解:从量变到质变的理解
  17. NFT社交时代,从朋克头像到声音名片
  18. 计算机组织与结构实验,计算机组织与结构实验报告 CQUPT.docx
  19. 怎样找回删除的微信好友?不用ROOT,不用数据恢复软件!而且免费!
  20. iOS 隐藏tabbar会导致底部tabbar的位置的空间不能被点击响应

热门文章

  1. c语言多进程之进程间通信IPC:信号操作函数之signal,kill
  2. separator path php,php常量 DIRECTORY_SEPARATOR 和 PATH_SEPARATOR
  3. Two Teams Composing
  4. keras实现注意力机制
  5. 多维偏序总结(CDQ)
  6. Redis 源码解读之 Rehash 的调用时机
  7. Gibbs Sampler
  8. 网络学习(一)--基本模型学习
  9. 机器学习之Kmeans
  10. R语言ggplot2包之坐标轴