美文网首页
Shell入门

Shell入门

作者: tanoak | 来源:发表于2018-07-23 19:10 被阅读11次

    后台开发过程中,不可避免的会使用到shell,对于一些复杂的脚本当然有运维处理,但是一些简单的脚本总不能老是让运维来帮助你解决吧,那么就一起来学习shell,想要深入掌握shell可以买一本《鸟哥的linux私房菜》,这本书大家可以去论坛了解下,质量杠杠的,文章末尾会附上这本书的下载地址,有条件可以去某宝入手一本,支持作者

    基本用法

    1. 第一个shell脚本,日常'hello world'
        #!/bin/bash
        echo 'hello world '
    
    
    1. 字符串
        #!/bin/bash
        my_name='Jack';
        my_age='20岁'
        #echo ${my_name} ${my_age}
        #echo ${my_name}${my_age}
        echo ${my_name:0:2}
    
    1. 数组
    NAME=();
    NAME[0]="JACK";
    NAME[1]="TOM";
    NAME[2]="Anna";
    echo "First Method: ${NAME[*]}"
    echo "Second Method: ${NAME[@]}"
    
    
    1. 显示结果重定向至文件 '>'
    echo "It is a test" > demo1.sh
    
    1. 条件判断
    #!/bin/bash
    # tanoak
    a=1
    b=2
    if [ ${a} == ${b} ];then
           echo "a 等于 b"
     elif [ $a -lt $b ];then
            echo "a 小于 b"
     else
        echo "a 大于 b"
    fi
    
    
    1. 循环 while与for
    #!/bin/bash
    #for((i=0; i<5 ;i++)) ;do
    #       echo "i="${i}
    i=1
    while((${i}<=5))
    do
        echo ${i}
        let "i++"
    done
    

    实践

    看案例之前可以先阅读扩展知识

    1. 监听tomcat进程是否存在
    #!/bin/bash
    NOWTIME=$(date +%Y%m%d_%H%M%S)
    ps -ef|grep tomcat|grep -v grep
    if [ $? -ne 0 ]
    then
    echo $NOWTIME"   stopped.....">>/opt/tom-log.log
    else
    echo $NOWTIME "   running....." >>/opt/tom-checkp.log
    fi
    

    扩展知识

    1. 单引号,双引号,反引号 区别
      a. 单引号(括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释)
      b. 双引号(除$(美元符号)、\(反斜杠)、'(单引号)、和"(双引号)这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待)
      c. 反引号(tab兼上方紧挨这数字1)`(括起来的字符串被shell解释为命令行)
    #!/bin/bash
    #echo 'hello world!!!'
    echo "两数之和为:$0
    
    
    1. 特殊变量
    $0 当前脚本的文件名
    $n 
    传递给脚本或函数的参数。n 是一个数字,表示第几个参数; eg:第一个参数是$1,第二个参数是$2
    $# 
    传递给脚本或函数的参数个数。
    $* 
    传递给脚本或函数的所有参数
    $@ 
    传递给脚本或函数的所有参数。被双引号("")包含时,会将各个参数分开
    $? 
    上个命令的退出状态,或函数的返回值; eg:一般情况0=>成功; 1=>失败
    
    $$ 
    当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID
    
    
    1. if条件命令选项
    -ne —比较两个参数是否不相等
    -lt —参数1是否小于参数2
    -le —参数1是否小于等于参数2
    -gt —参数1是否大于参数2
    -ge —参数1是否大于等于参数2
    -f — 检查某文件是否存在
    -d — 检查目录是否存在
    eg:
    #!/bin/bash
    # tanoak
    if [ -d "/opt/abc.txt" ];then
        echo '文件不存在'
    else
        echo '文件存在'
    fi
    
    

    爬坑

    1. syntax error near unexpected token `then'
      解决方案:检查空格if后面要接个空格

    2. syntax error: unexpected end of file

    解决方案:在if语句后加上 fi 如果仍然报错可以参考https://blog.csdn.net/u012453843/article/details/69803244
    如理解有误,请指正,谢谢
    鸟哥的linux私房菜第四版
    链接: https://pan.baidu.com/s/1LskIGBv_UcoJON7LEIJWMw 密码: yxdi

    相关文章

      网友评论

          本文标题:Shell入门

          本文链接:https://www.haomeiwen.com/subject/sfzjmftx.html