前不久入职实习生,现在在帮着组里面dalao们跑Case,时不时要上去收一下有木有Dump,每次敲命令太烦人于是逼着自己学写Shell脚本。一开始真的是很痛苦啊,也没能搞到书,只能凭网上半真半假的消息照葫芦画瓢!废话少说,上正文!

=========================我是分割线=========================

 clear

 echo "Check_dump is a tool help you check dumps"

 numberOfSPs=
commands="-lcd"
###########################################################
#
# getopts 命令是 Korn/POSIX shell 的内置命令
# ,用来从参数列表检索选项以及选项参数。选项由一个+(加号)
# 或者是由一个-(减号)后跟一个字符开始。一个既不是以+,也不
# 是以-开始的选项结束选项字符串。每次调用 getopts 命令时,它
# 将下一个选项的值放置在 Name 内,并将下一个要处理的参数的索引
# 置于 shell 变量 OPTIND 中。每当调用 shell 时,都会将
# OPTIND 初始化为 。当选项以 + 开头时,会将 + 预
# 追加到 Name 中的值。
#
########################################################## while getopts ":a:b:c:n:" opt # 如果选项字符串中的字符后面带有“:”(冒号),那么预期此选项将带有参数。
# 在这里a前面有没有冒号会决定下面的*/?能不能起效
# 详细的说明可以参考 https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds2/getopts.htm
do
case $opt in
a)
d1=$OPTARG # 当选项需要选项参数时,getopts 命令就将其置于变量 OPTARG 中
echo "d1 is $d1 "
;; # 一定要记得加上末尾的;;,相当于其它语言的 break
b)
d2=$OPTARG # OPTARG 出现了,他就是取得参数的具体地方
echo "d2 is $d2, and destination is $d1.$d2" # Shell 里面的变量很有意思,直接这样写就能顺着输出出来
;; # 双引号会解析字符串里面的转义字符和变量名,单引号不会
c)
commands=$OPTARG
echo " Addtional command: $commands "
;;
n)
numberOfSPs=$OPTARG
echo "Number of SPs has changed to $numberOfSPs "
;;
*) # * 或者 ? 匹配所有不是上面列出的东东
echo "Usage: check_dump -a<xxx.xxx.xxx> -b<xxx> -c<commands> -n<number of SP>
And the destination is IP for Unisphere."
exit
esac
done i=
while [ $i -le $numberOfSPs ]
do
d2=$((d2+))
destination="$d1.$d2"
echo "=============================================
checking SP$i, destination is :$destination" # 很有趣吧,直接在字符串里面换行,打印输出内容也会换行!
i=$((i+)) # $(()) 和 下面的 ``是一样的,表示里面的东东可以执行,需要执行以后再做其他操作
res="`ssh $destination svc_dc $commands`"
if [[ ${#res} == ]];then # 比较应该深度学习的“expr指令”的缩写版本,原版有些指令少而不太好使
# 看到if后面跟的什么了没!!!!";then""五个字符一个不能少!
echo "No dumps"
else # 分支比较多的话还可以选择用elif[[ condition ]];then
echo "Found dumps:
$res"
fi done
exit

就是这样子,在想到什么就再往上面丢点什么吧!

[2019.03.20]Linux Shell 执行传参数和expr的更多相关文章

  1. linux shell执行方式

    linux shell执行有两种方式 shell脚本以#!/bin/bash开头,执行shell时先检查首行,在内部以下列方式执行: $/bin/bash script.sh 1. 使用sh执行. $ ...

  2. [2019.03.25]Linux中的查找

    TMUX天下第一 全世界所有用CLI Linux的人都应该用TMUX,我爱它! ======================== 以下是正文 ======================== Linu ...

  3. Linux shell中一些参数与变量简介

    linux中shell变量$#,$@,$0,$1,$2,$!,$$,$*,$-,$@......等很多个,很容易记错,这里再次整理一下,相关含义解释如下,并附上一个实践截图. 多看几次,多用几次,应该 ...

  4. Shell script 传参数处理(默认变量)

    变量 含义 $0:shell脚本的名字: $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 "$*" :代表"$1c$2c$3 ...

  5. linux shell 执行命令顺序

    1.shell命令搜索顺序 在linux shell 中输入一个命令,如果有多个同名指令,shell需要按照一定规则去取优先级高的一个执行,shell命令的搜索顺序为: 1.别名,使用alias创建的 ...

  6. Linux Shell : Test命令参数解析

    格式: test conditions test -n string : string 不为空 test -z string : string 为空 test int1 -eq int2  : int ...

  7. Linux中执行脚本参数获取

    Linux中变量$[#,@,0,1,2,*,$,?]含义 $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $ ...

  8. Linux Shell 如何获取参数

    $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示 ...

  9. linux shell执行原理

    shell简介 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. 运行背景 a 一个基本的linux系统结构 b.由上图可以看出,shel ...

随机推荐

  1. Java使用Aspose组件进行多文档间的转换操作

    首先,祝大家新年快乐,2019诸事顺利,很久没有更新博客,今天要给大家说的是 ”Aspose“ 组件,作为2019年第一篇博客,希望大家能够多多支持,2019年要继续加油. 什么是Aspose? As ...

  2. 简述ADO中如何使用参数化的命令对象以及增删改查,存储过程的操作

    连接数据库代码: private SqlConnection con = null; public void OpenConnection(string connectionString) { con ...

  3. Tomcat的常用内置对象

    Tomcat的常用内置对象 1.request内置对象 所谓内置对象就是容器已经创建好了的对象,如果收到一个用户的请求就会自动创建一个对象来处理客户端发送的一些信息,这个内置对象就是request.类 ...

  4. 视频文件列表hover添加视频播放按钮

    默认效果图: 鼠标hover效果: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  5. vue px 转rem

    来自:https://www.cnblogs.com/wangqiao170/p/8652505.html 侵 删   每一个认真生活的人,都值得被认真对待 vue px转换为rem 前端开发中还原设 ...

  6. Win10系统下装Ubuntu虚拟机的遇到的问题总结

    环境和工具 win10操作系统 VMware Workstation 12 Ubuntu 14.0 64位 教程可参考:VMware Ubuntu安装详细过程(非常靠谱) [因为我的安装过程不是十分顺 ...

  7. Spark RPC框架源码分析(二)RPC运行时序

    前情提要: Spark RPC框架源码分析(一)简述 一. Spark RPC概述 上一篇我们已经说明了Spark RPC框架的一个简单例子,Spark RPC相关的两个编程模型,Actor模型和Re ...

  8. EOS之hello智能合约解析

    传送门: 柏链项目学院   EOS的智能合约与以太坊区别很大, EOS 的智能合约基于 WebAssembly(WASM) 技术执行用户生成的应用程序和代码.WASM是一项新兴的网络标准,得到了谷歌, ...

  9. 【Teradata SQL】行转列函数TDStats.udfConcat

    TDstats.udfConcat为Teradata自带UDF,定义如下: show function tdstats.udfconcat; REPLACE FUNCTION tdstats.UDFC ...

  10. IDEA Can't Update No tracked branch configured for branch master or the branch doesn't exist.

    IDEA Can't Update No tracked branch configured for branch master or the branch doesn't exist.To make ...