shell脚本结构示例1
2013年以来自己因为偷懒,少写了很多东西,今年计划把以前积累的总结出来。
先从shell开始写起吧。
干了快3年游戏运维,期间经常会写一些shell本,不少脚本其实有很多可以复用的部分。
按照自己的风格,如果是比较重要的脚本,脚本内容可以分为3部分:输入部分、核心逻辑部分、输出部分。
本文主要介绍输入部分。
通常在现网运行的脚本,为了防止勿执行,最好带上参数,例如:
test.sh -w 1
而带参数的脚本写法如下,注释部分按个人风格书写即可:
#!/bin/bash
# creat by fank 2016-01-01
echo "===`date +"%F %T"`==" while getopts w: opt;do
case $opt in
w) w_list=${OPTARG};;
?) usage;;
esac
done
usage(){
echo "$0 -w [check_list]"
echo "$0 -w \"27-30\""
echo "$0 -w \"2,3,4\""
exit 1
}
echo $w_list
完成了带参数的输入,接下来可以进行参数解析或检查等操作。
实际过程中也经常可能遇到参数扩展的情况,比如输入-w '1-10',如何在脚本中把这个保存为一个包含1-10的数组呢:
function check_input(){
[[ -z $w_list ]]&& usage
w_list=${w_list//-/..}
w_tmp="echo {$w_list}"
list=$(eval $w_tmp)
list=$(echo $list|awk -F'{|}| ' '{for(i=1;i<=NF;i++)print $i }'|xargs)
for i in $list;do
[[ $((i+)) != $i ]] && tms_fail "Input worldID must be a number!"
done
echo "World set list is as follows:"
echo $list
echo "=="
}
在上面的代码中,对w_list变量(字符串)先进行了一次替换
w_list=${w_list//-/..}
然后利用花括号扩展产生一个序列保存在新变量中
w_tmp="echo {$w_list}"
list=$(eval $w_tmp)
其实这句代码,对-w '1,2,3' 这种输入也适用。
shell脚本结构示例1的更多相关文章
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- Shell脚本、Shell脚本结构、date命令的用法、变量
1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构: #!/bin/bash 以#!/bin/bash开头,即以/bin/ba ...
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...
- Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...
- shell脚本结构
echo $? 代表上一次命令的状态返回值,‘0’则代表为真<执行成功>,‘非零’则代表为假<执行失败>. shell脚本: <判断老男孩的年纪> [root@bo ...
- 一个简单的linux下设置定时执行shell脚本的示例
很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如说定时去备份服务器数据.数据库数据等 不适合人工经常做的一些操作这里简单说下 shell Shell俗称壳,类似于DOS下的command ...
- Shell脚本大量示例
Shell基础之控制流结构 一.控制结构 几乎所有的脚本里都有某种流控制结构,很少有例外.流控制是什么?假定有一个脚本,包含下列几个命令: #!/bin/sh # make a directory ...
- shell脚本结构化语句
本文中记录一下shell中的两种循环语句:for和while for循环 for循环是linux shell中最常用的结构,for循环有三种结构:1.列表for循环.2.不带列表for循环.3.C风格 ...
- Linux系统——shell脚本应用示例
传入一个网段地址,自动找出本网段内存活的IP地址.2,将存活的IP地址当作密码来创建Linux用户,用户名格式为:你的名字_数字 3,有几个存活IP地址,就自动创建几个用户 4,最后将创建的用户名 ...
随机推荐
- PHP libxml RSHUTDOWN安全限制绕过漏洞(CVE-2012-1171)
漏洞版本: PHP PHP 5.5.x 漏洞描述: BUGTRAQ ID: 65673 CVE(CAN) ID: CVE-2012-1171 PHP是一种HTML内嵌式的语言. PHP 5.x版本内的 ...
- 关于开源框架GPUImage 的简单说明
GPUImage是一个非常棒的图像处理的开源库,里面提供了非常非常多的滤镜效果来加工图片. 不过就是因为太多效果了,而且对于程序员来说,那么多效果并不清楚知道要用那一个.于是我就使用提供的默认值,加上 ...
- Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master
转:http://***/html/blogs/20130407/1381.htm 最近做了一个项目管理系统,要求用Sharepoint,有个特别的功能就是通过创建出来的子站点要求应用同一个Maste ...
- VS2010中的调试技巧
作者: scottgu 这是我的博客中关于VS 2010和.NET 4发布系列的第二十六篇文章. 今天的博文将介绍Visual Studio中的一些实用调试技巧.这是受我朋友Scott Cate (他 ...
- Xfire soapHeader的WebService权限控制forjava
研究webservice有一段时间了,觉得用soapHeader来控制访问比较简单,特贴出代码以供大家分享 1.我们可以做一个很简单的ws测试,服务端的接口代码如下: package ws; //Ge ...
- vpn分配多ip的配置
1,创建vpn路由和远程访问 --配置并启用和路由远程访问--自定义配置--选择“vpn访问”,“nat和基本防火墙. 2,vpn配置ip路由选择(nat/基本防火墙)--新增接口(选择本地网卡)-- ...
- NOIP2013 货车运输 LCA倍增+最大生成树
#include <cstdio> #include <iostream> #include <ctime> #include <vector> #in ...
- [转]ASP.NET MVC 入门8、ModelState与数据验证
ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合.在进行数据验证的时候这个属性是比较有用的.在使用Html. ...
- [BILL WEI]SQL 如何将查询到的列作为表名去查询数据
我们在做sql查询的时候,有时候需要将查询的列作为表名,去引用,然后再次查询 declare @table_name varchar(20) select @table_name=table_name ...
- js定义函数的几种结构形式
1.函数声明 function name(参数) { 执行的代码 } 2.函数表达式 也称匿名函数 var x = function (参数) { 执行的代码 }; //第二种方式按照完整的语法需要在 ...