博客
关于我
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/

    你可能感兴趣的文章
    PAT (Basic Level) Practice 乙级1031-1040
    查看>>
    PAT (Basic Level) Practice 乙级1041-1045
    查看>>
    SparkSql的元数据
    查看>>
    PAT (Basic Level) Practice 乙级1051-1055
    查看>>
    PAT (Basic Level) Practise - 写出这个数
    查看>>
    PAT 1027 Colors in Mars
    查看>>
    PAT 1127 ZigZagging on a Tree[难]
    查看>>
    PAT 2-07. 素因子分解(20)
    查看>>
    PAT A1033 重点题
    查看>>
    SparkSQL学习03-数据读取与存储
    查看>>
    PAT L2-012. 关于堆的判断
    查看>>
    PAT Spell It Right [非常简单]
    查看>>
    PAT-1044. Shopping in Mars (25)
    查看>>
    PAT-乙级-1040 有几个PAT
    查看>>
    pat1011. World Cup Betting (20)
    查看>>
    Spring组件扫描配置
    查看>>
    PAT1093 Count PAT's (25)(逻辑题)
    查看>>
    PATA1038题解(需复习)
    查看>>
    Patching Array
    查看>>
    Spring源码学习(二):Spring容器之prepareContext和BeanFactoryPostProcessor的介绍
    查看>>