Shell脚本

背景

有对气象海洋数据进行后处理并画图的需求,因数据量大且工作重复 ,故使用shell命令。

环境

服务器账号密码登录、nc数据、matlab软件及代码、shell脚本文件

基本语法

1、#!/bin/bash

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。

echo 命令用于向窗口输出文本。

2、for循环

for((i=1;i<31;i++));
do
# A code block
done

3、创建文件夹

filepathfinal = "/vol8/home/caoyu/visualcode/forecast/pomout"
mkdir -p $filepathfinal

4、从一个路径复制到另一个路径

sourcepath = ''/vol8/home/caoyu/fvcom/Forecast/cnsforecast''
destpath = ''/vol8/home/caoyu/visualcode/forecast/pomout/ ''
cp -r $sourcepath/* $destpath

5、日期转换

a、日期转文本

date=20210900
i=1
b=`expr $date + $i`
echo $b
c=`expr $b \* 100 `
echo $c

b、日期按格式转成文本

startdate=`date -d "2021-09-01 +$a day" +%Y-%m-%d`

c、拼接字符串

datename1=`date -d "2021-09-01 +$a day" +%Y%m%d`
datename=$datename1"00"

6、修改代码

#格式:
# sed -i "s/$[需要修改的源代码字符串]/$[修改后的代码字符串]/g" ./[需要修改的代码所属的文件名及其后缀]
示例:
sed -i "s/$orginaldateruntime/$newdateruntime/g" ./runtime.txt

7、退出软件执行命令

<<EOF 代表后续语句也作为命令输入,遇到末尾的EOF结束。

<<EOF 
# 执行的语句
EOF

示例:

# 1、进入matlab画图文件目录
cd "/vol8/home/caoyu/visualcode/forecast/m_script/wave"

# 2、启动matlab 执行draw_dirmn 代码文件画图,画完退出matlab
matlab -nosplash -nodesktop -r draw_dirmn <<EOF
exit
EOF

# 3、启动matlab 执行draw_hs 代码文件画图,画完退出matlab
matlab -nosplash -nodesktop -r draw_hs <<EOF
exit
EOF

执行exit 或者 quit ,可退出软件

代码

1、复制数据

需要复制一个月的数据,文件夹命名按日期递增。

#!/bin/bash
date=20210900
for((i=1;i<31;i++));
do
b=`expr $date + $i`
echo $b
c=`expr $b \* 100 `
echo $c
filepath="/vol8/home/caoyu/visualcode/forecast/pomout/"
filepathfinal=$filepath$c
echo $filepathfinal
mkdir -p $filepathfinal

originalpath="/vol8/home/caoyu/fvcom/Forecast/cnsforecast/$b/output"
echo $originalpath
echo "cp -r $originalpath/* $filepathfinal"
cp -r $originalpath/* $filepathfinal
done

2、启动matlab软件执行代码

#!/bin/bash
#修改runtime时间
dir_work="/vol8/home/caoyu/visualcode/forecast/"
orginaldateruntime="2021-09-06 00:00:00"

for (( a = 1; a < 30; a++ ));
do
startdate=`date -d "2021-09-01 +$a day" +%Y-%m-%d`
datename1=`date -d "2021-09-01 +$a day" +%Y%m%d`
datename=$datename1"00"
newdateruntime=$startdate" 00:00:00"

#修改runtime时间
cd $dir_work
sed -i "s/$orginaldateruntime/$newdateruntime/g" ./runtime.txt
orginaldateruntime=$newdateruntime
filepath="/vol8/home/caoyu/visualcode/forecast/pomout/$datename"

#e="imgs/sound/"
#f="IMAGES/sound/"
#orgimgpathsound=$dir_work$e$datename

forncname="cns_for_restart_0001.nc"
echo $forncname

#修改文件名
cd "/vol8/home/caoyu/visualcode/forecast/fvcomnc/"

#生成fvcom_3d*.nc
matlab -nosplash -nodesktop -r gen_fvcomnc_s <<EOF
exit()
EOF
matlab -nosplash -nodesktop -r gen_fvcomnc_t <<EOF
exit()
EOF

#sound
cd "/vol8/home/caoyu/visualcode/forecast/m_script/sound/"
matlab -nosplash -nodesktop -r sound_test_v5 <<EOF
exit
EOF

echo $datename"运行完成"
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值