[2019.03.20]Linux Shell 执行传参数和expr
前不久入职实习生,现在在帮着组里面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的更多相关文章
- linux shell执行方式
linux shell执行有两种方式 shell脚本以#!/bin/bash开头,执行shell时先检查首行,在内部以下列方式执行: $/bin/bash script.sh 1. 使用sh执行. $ ...
- [2019.03.25]Linux中的查找
TMUX天下第一 全世界所有用CLI Linux的人都应该用TMUX,我爱它! ======================== 以下是正文 ======================== Linu ...
- Linux shell中一些参数与变量简介
linux中shell变量$#,$@,$0,$1,$2,$!,$$,$*,$-,$@......等很多个,很容易记错,这里再次整理一下,相关含义解释如下,并附上一个实践截图. 多看几次,多用几次,应该 ...
- Shell script 传参数处理(默认变量)
变量 含义 $0:shell脚本的名字: $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 "$*" :代表"$1c$2c$3 ...
- linux shell 执行命令顺序
1.shell命令搜索顺序 在linux shell 中输入一个命令,如果有多个同名指令,shell需要按照一定规则去取优先级高的一个执行,shell命令的搜索顺序为: 1.别名,使用alias创建的 ...
- Linux Shell : Test命令参数解析
格式: test conditions test -n string : string 不为空 test -z string : string 为空 test int1 -eq int2 : int ...
- Linux中执行脚本参数获取
Linux中变量$[#,@,0,1,2,*,$,?]含义 $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $ ...
- Linux Shell 如何获取参数
$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示 ...
- linux shell执行原理
shell简介 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. 运行背景 a 一个基本的linux系统结构 b.由上图可以看出,shel ...
随机推荐
- k8s数据管理(八)--技术流ken
volume 我们经常会说:容器和 Pod 是短暂的.其含义是它们的生命周期可能很短,会被频繁地销毁和创建.容器销毁时,保存在容器内部文件系统中的数据都会被清除. 为了持久化保存容器的数据,可以使用 ...
- Css-移动端适配总结
前言 工作以后,大部分的业务工作都是基于移动端H5的,开发过程中学习了很多东西,遇到过许多问题,诸如rem\em\css px\device px等,本文纯属个人的归纳总结,如有问题,请指出亲喷~ P ...
- Celery工具
什么是Celery Celery的功能 Celery是基于python实现的第三方组件,可以实现定时任务.周期任务等. Celery的组成 Celery的角色 - 任务,创建或发布任务. - 使用re ...
- Odd-e CSD Course Day 5
因為今天是最後一天了,我趕緊在這次結束前提出一些前一晚上想到的問題 1. 在TDD的循環中有重構,那 DB 也會進行重構嗎? 在TDD 的重構的過程,其實也經常會重構資料庫 , 但重構資料庫這裡有一個 ...
- css3动画--位移加阴影
animation: name duration timing-function delay iteration-count direction; 值 描述 animation-name 规定需要绑定 ...
- Android自定义控件实例,圆形头像(图库 + 裁剪+设置),上传头像显示为圆形,附源码
Android项目开发中经常会遇见需要实现圆角或者圆形的图片功能,如果仅仅使用系统自带的ImageView控件显然无法实现此功能,所以通过系列文章的形式由简到繁全方位的介绍一下此功能的实现,巩固一下自 ...
- Android 离线人脸识别 ArcFace 2.0 Demo开发分享
环境要求 1.运行环境 armeabi-v7a 2.系统要求 Android 5.0 (API Level 21)及以上 3.开发环境 Android Studio 下载地 ...
- MQTT简单介绍与实现
1. MQTT 介绍它是一种 机器之间通讯 machine-to-machine (M2M).物联网 Internet of Things (IoT)常用的一种轻量级消息传输协议适用于网络带宽较低的场 ...
- First Show
随便写写,记录美好生活 博客的内容主要是关于java后台开发所涉及到技术栈的学习记录
- 简单概括下MongoDB 4.0 新特性
(1)跨文档事务支持 (ACID) 首个支持跨文档事务的NoSQL云数据库,将文档模型的速度,灵活性和功能与ACID保证相结合.现在,使用MongoDB解决各种用例变得更加容易. (2)40%迁移速度 ...