博客
关于我
day5-Shell脚本编程精讲(ob14)-2
阅读量:349 次
发布时间:2019-03-04

本文共 2218 字,大约阅读时间需要 7 分钟。

Shell编程入门:从基础到实践

一、for循环

for循环是Shell编程中的基础结构,常用于批量处理任务。理解for循环的语法是掌握Shell编程的关键。

for循环结构语法

Shell中的for循环有两种形式:

  • for 变量名 in 列举值 do
    for i in `seq 3` do    echo $idone
  • for((exp1;exp2;exp3)) do
    for((i=1; i<=3; i++)) do    echo $idone
  • 例子13:批量检查Web服务状态并发送警报

    #!/bin/bashRETVAL=0SCRIPTS_PATH="/server/scripts"MAIL_GROUP="3xxxxxx1@qq.com 4xxxxxxx8@qq.com"LOG_FILE="/tmp/web_check.log"function Get_Url_Status() {    FAILCOUNT=0    for ((i=1; i<=3; i++)) do        wget -T 20 --tries=2 --spider http://${HOST_NAME} > /dev/null 2>&1        if [ $? -ne 0 ]; then            let FAILCOUNT+=1        fi    done    if [ $FAILCOUNT -eq 3 ]; then        RETVAL=1        NOW_TIME=`date +"%m-%d %H:%M:%S"`        SUBJECT_CONTENT="http://${HOST_NAME} service is error, ${NOW_TIME}."        for MAIL_USER in $MAIL_GROUP; do            echo "send to :$MAIL_USER ,Title:$SUBJECT_CONTENT" >> $LOG_FILE            mail -s "$SUBJECT_CONTENT" $MAIL_USER < $LOG_FILE        done    else        RETVAL=0    fi    return $RETVAL}# 定义要检测的网站[ ! -d "$SCRIPTS_PATH" ] && mkdir -p $SCRIPTS_PATH# 检查是否有相关的网站列表[ ! -f "$SCRIPTS_PATH/domain.list" ] && cat > $SCRIPTS_PATH/domain.list < /

    例子:批量创建用户并附上随机密码

    userchars="test"passfile="/tmp/user.log"for num in `seq 3` do    useradd $userchars$num    passwd="`echo "date $RANDOM"|md5sum|cut -c3-11`"    echo "$passwd" | passwd --stdin $userchars$num    echo -e "user:$userchars$num\t_passwd:$passwd" >> $passfile    sleep 1doneecho "This is oldboy training class contents"cat $passfile

    二、Shell函数

    Shell函数是Shell脚本的灵魂,通过定义函数可以将复杂的操作抽象成可重复利用的模块。

    函数定义

    function_name() {    # 函数体内的操作    return n}

    函数调用

    function_name

    三、Shell脚本调试

    在开发Shell脚本时,调试是必不可少的环节。以下是一些常用的调试工具和方法。

    使用dos2unix命令处理脚本

    dos2unix可以将Windows编辑的脚本转换为Linux格式,去除^M符号。

    使用bash命令参数调试

    sh [-nvx] scripts.sh-n:不执行脚本,只检查语法-v:显示脚本的执行过程-x:显示脚本的内容

    四、Shell编程规范

  • 变量命名规范

    • 全部大写或驼峰命名
    • 示例:${APACHE_ERR_NUM}${APACHE_ERR_NUM}
  • 函数命名

    • 首字母大写或驼峰命名
    • 示例:CreateFilecreateFile
    • 建议在函数名前加function保留字
  • 引用符号规范

    • 使用大括号引用变量
    • 示例:${APACHE_ERR_NUM}
  • 配置规范

    • 配置文件应保存在/etc目录下
    • 配置文件内容清晰易懂
  • 五、补充说明

  • 环境变量管理

    • 在脚本运行前,通过export重新声明环境变量
    • 示例:export PATH="/usr/local/bin:$PATH"
    • 这是为了避免在定时任务等场合使用脚本时出现环境变量问题
  • 脚本编写建议

    • 尽量使用source命令加载脚本
    • 示例:source func-1.sh
    • 使用.符号也可以加载脚本
  • 通过以上内容,可以看到Shell编程的基本语法和实践技巧。掌握这些知识点是成为一名专业的Shell脚本编写人员的重要基础。

    转载地址:http://tqhe.baihongyu.com/

    你可能感兴趣的文章
    PHP $_FILES函数详解
    查看>>
    PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
    查看>>
    php &amp; 和 &amp;amp; (主要是url 问题)
    查看>>
    php -- 魔术方法 之 判断属性是否存在或为空:__isset()
    查看>>
    php -- 魔术方法 之 获取属性:__get()
    查看>>
    php -树-二叉树的实现
    查看>>
    PHP -算法-二路归并
    查看>>
    php 2条不一样 的json数据 怎么放在一个json里面_如果你是PHP开发者,请务必了解一下Composer...
    查看>>
    php 360 不记住密码,JavaScript_多种方法实现360浏览器下禁止自动填写用户名密码,目前开发一个项目遇到一个很 - phpStudy...
    查看>>
    regExp的match、exec、test区别
    查看>>
    php 404 自定义,APACHE 自定义404错误页面设置方法
    查看>>
    PHP 5.3.0以上推荐使用mysqlnd驱动
    查看>>
    php 7.2 安装 mcrypt 扩展: mcrypt 扩展从 php 7.1.0 开始废弃;自 php 7.2.0 起,会移到 pecl...
    查看>>
    php aes sha1解密,PHP AES加密/解密
    查看>>
    php array 分片,PHP常用数组函数小结
    查看>>
    php CI框架单个file表单多文件上传例子
    查看>>