linux成长记-3.21

shell脚本语法
1  expr 数值运算工具

   注 : 给变量赋值时‘=’号前后没有空格;当进行运算时运算符前后有空格,变量引用前面加$符号

            expr1 \* 3 使用*要加转义符,除不需要转义。

            注意图二使用的是反引号 ` 而不是单引号 '

2 运行方式的差异

(2.sh脚本)

   注 (.  2.sh )与(source  2.sh)作用相同。

   产生上图原因:(sh 2.sh)与(./2.sh)执行命令会产生子进程,脚本执行在子进程中执行,变量为局部变量,不会返回到父进程中。

                           (.  2.sh )与(source  2.sh)执行命令会在当前进程中进行,变量可以被输出显示。

3 变量表达式

3.1适用整数 test   n1  -参数   n2           (真返回0,假返回1)

                                  -lt  小于

                                 -le  小于等于

                                 -gt  大于

                                 -ge 大于等于

                                 -eq等于

                                 -ne不等于

        注 : 可用中括号代替test。例  test  1  -lt  4   等价于  [ 1 -lt 4 ] (表达式与中括号间有空格)

3.2 文件测试    -f    存在且是普通文件
                       -d   存在且是目录
                       -s   存在且字节数大于0
                       -r   存在且可读
                       -w  存在且可写
                       -x   存在且可执行   -e  文件是否存在   
3.3 字符测试   (建议用两个中括号[[   ]])

                       =    , !=    ,  -n  string  测试指定的字符串长度非0

                        -z   字符串的长度为0 , >  如果str1的字母顺序比str2大,则返回真,< 如果str1的字母顺序比str2小,则返回真

3.4 其他

                    !  非运算,表达式为 true则返回 false,否则返回 true[ ! false ] 返回 true。

                     o  或运算,有一个表达式为 true 则返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true。

                     a  与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false。

4 控制流程

4.1seq命令


4.2 分支结构

if [ $# -eq 0 ]
then
echo “输入了0个参数”
elif[ $# -gt 1 ]
then echo “输入了多个参数”
else echo “输入了1个参数”
fi
case “$#” in
0)echo “输入了0个参数”;;
1)echo “输入了1个参数”;;
*)echo “输入了多个参数”;;
esac
每个分支条件后必须以两个分号结尾

4.3 循环结构

例子:输出100内10的倍数
#for i  in {1..9} (大括号中不能有变量
for  i   in  `seq1 9`(此处可以用变量 如  `seq  $1   9`)
do
echo `expr  $i  \*  10`
done

4.4  read 变量1 [变量2 …]

       可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。

       如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;

       如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。

4.5   break  跳出内部循环      break2   跳出外部循环

        continue   跳出内部判断   continue2   跳出外部判断

5 函数  函数由两部分组成:函数标题和函数体

        所有函数在使用前必须定义。必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。 

6 数组

      echo ${array_var[*]}   (打印数组中所有的值 ,单个)

      echo ${array_var[@]}    (打印数组中所有的值,一串)

      echo ${#array_var[*]}   (打印数组长度)

  shell 提供了另外一种数组,其可以使用任意的字符串作为下标(不必是整数)来访问数组元素。这种数组叫做关联数组。

  关联数组的下标和值称为键值对,它们是一一对应的关系。在关联数组中,键是唯一的,值可以不唯一。

  注:在使用关联数组之前,需要使用命令declare -A array 进行显示声明

  例: name=(jimtom lucy)
          declare -A phone
          phone=([jim]=135 [tom]=136 [lucy]=158)
          for i   in `eval  echo {0..$((${#name[*]}-1))}`
          do
               echo ${name[i]} phone number is ${phone["${name[i]}"]}

          done

          ${!array[*]}取关联数组所有键

          ${!array[@]}取关联数组所有键

          ${array[*]}取关联数组所有值

          ${array[@]}取关联数组所有值

          ${#array[*]} 关联数组的长度

          ${#array[@]}关联数组的长度

潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是一套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值