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的更多相关文章

  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数组简单用法 $( ) 和$ ...

  2. Shell脚本、Shell脚本结构、date命令的用法、变量

    1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构:   #!/bin/bash  以#!/bin/bash开头,即以/bin/ba ...

  3. shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...

  4. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

  5. shell脚本结构

    echo $? 代表上一次命令的状态返回值,‘0’则代表为真<执行成功>,‘非零’则代表为假<执行失败>. shell脚本: <判断老男孩的年纪> [root@bo ...

  6. 一个简单的linux下设置定时执行shell脚本的示例

    很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如说定时去备份服务器数据.数据库数据等 不适合人工经常做的一些操作这里简单说下 shell Shell俗称壳,类似于DOS下的command ...

  7. Shell脚本大量示例

     Shell基础之控制流结构 一.控制结构 几乎所有的脚本里都有某种流控制结构,很少有例外.流控制是什么?假定有一个脚本,包含下列几个命令: #!/bin/sh # make a directory ...

  8. shell脚本结构化语句

    本文中记录一下shell中的两种循环语句:for和while for循环 for循环是linux shell中最常用的结构,for循环有三种结构:1.列表for循环.2.不带列表for循环.3.C风格 ...

  9. Linux系统——shell脚本应用示例

    传入一个网段地址,自动找出本网段内存活的IP地址.2,将存活的IP地址当作密码来创建Linux用户,用户名格式为:你的名字_数字 3,有几个存活IP地址,就自动创建几个用户   4,最后将创建的用户名 ...

随机推荐

  1. Java金字塔及变形

    Java金字塔 package com.tfj.test; public class JinZiTa { public static void main(String[] args){ int num ...

  2. bzoj1054

    弱弱的搜索题, 我的做法是将矩阵看做二进制然后用位运算来做的,感觉比较舒服 ..] ,,,);       dy:..] ,,-,); type node=record        po,next: ...

  3. BZOJ_1013_[JSOI2008]_球形空间产生器_(高斯消元)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1013 n维空间,给出球上n+1个点的n维坐标,求球心坐标. 提示:给出两个定义:1. 球心:到 ...

  4. 指令 scope

    angular学习笔记(三十)-指令(8)-scope <!DOCTYPE html> <html ng-app="myApp"> <head> ...

  5. Charles使用问题, iOS7的http代理(http proxy)配置不生效问题

    Charles配合iOS7使用时, 发现iOS7的http代理(http proxy)配置不生效, 代理信息写完后, 系统没有自动保存. 解决方法: 将些wifi忽略, 重新连接, 再配置代理就好了.

  6. 分布式缓存BeIT Memcached简介

    分布式缓存BeIT Memcached简介 或许你还没有用到过分布式缓存,在web集群的情况下,它可以很好的让一部分常用数据常驻服务器内存而不用担心各台web不同步.下面稍微介绍一下beitmemca ...

  7. 关于ListView的 addHeaderView(...) 方法

    在代码中使用 listView .addHeaderView(...) 方法可以在ListView组件上方添加上其他组件,并且连结在一起像是一个新组件.如果多次使用 .addHeaderView(.. ...

  8. MySQL运行原理与基础架构

    1.MySQL基础 MySQL是一个开放源代码的关系数据库管理系统.原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用. 2008年My ...

  9. 用FSM写Case,玩过没?

    一.引言 测试工程师小新一是一名安卓客户端测试工程师,对于安卓客户端的功能测试.自动化测试和性能测试方面都有着非常丰富的经验.最近小新一被通知负责某二手交易APP的功能测试,在初步了解了该APP后,小 ...

  10. 安装qc 出现error An error occurred while attempting to connect to the database.

    When trying to install mercury quality center starter edition 9.0 on Windows XP media center, I am g ...