Linux脚本编程

作者: 让梦想腾飞 | 来源:发表于2018-07-22 19:56 被阅读41次

    1、echo

    echo 'hello world!'
    

    echo "hello world!"错误,“”解释,!有特殊用途

    echo -e "\e[1;31m abcd \e[0m"
    

    30m 黑色,31m红色 32m绿色 33m黄色 34m蓝色 35m洋红 36m青色 37m白色

    2、脚本执行

    ./hello.sh
    unix2dos 和dos2unix 讲windows下.sh文件转为linux下,因为系统换行符不同

    3、输入输出重定向

    date >> abc 2>>&1
    date1 >> abc 2>>&1
    date &>>abc
    date1 &>>abc
    

    把正确和错误信息都追加到文件中
    2(不能有空格)>>&1

    ls1 >>abc 2>>def
    

    把正确数据输入到abc ,把错误数据输出到def

    4、顺序执行和管道符

    ls;cd /user;date
    

    cd /user错误不影响date执行

    ls && echo yes ||echo no
    

    ls命令正确执行 打印yes 否则打印no

    cat /etc/passwd |grep "root"
    

    grep -i 区分大小写
    -n 显示行数
    --colre=auto 显示颜色

    cat /etc/passwd |grep -n --color=auto "root"
    

    5、bash中特殊符号

    ‘’单引号里的特殊符号不识别
    ""识别特殊符号
    '#'注释
    $调用变量值
    \ 转义字符
    & 放入后台,即最小化

    6、变量

    aa="aa"
    bb=${aa}123
    cc="$aa"456
    echo "$aa $bb $cc"
    unset aa
    

    7、位置参数

     #!/bin/bash
     sum=$(($1+$2))
      echo "sum is $sum"
    $0 所有参数 $1第一个参数 $2 第二个参数
    
     1 #!/bin/bash
      2 echo $#
      3 echo $*
      4 echo $@
    

    ./param.sh 1 23 4

    3
    1 23 4
    1 23 4
    

    8、预定义变量

    echo $?
    

    判断上一条命令是否正确执行,正确为0,否则非0

    #当前进程Pid
    echo $$
    find /root/ -name "test.txt" &
    #后台运行最后一个进程pid
    echo $!
    

    9、数值运算和运算符

    aa=11
    bb=22
    ff=$(($aa+$bb))
    echo $ff
    

    10、cut

    分隔符为空格符时不好判断
    制表符,或冒号分号等可以

    cat /etc/passwd |grep -n -v "root"|cut -d ":" -f 2,6
    

    提取冒号分隔的第2列和第6列

    11、awk

    awk 条件 输出 文件

    #打印第1、5、6列
    df -h|awk '{print $1 "\t" $5 "\t" $6}'
    #打印第5列并提取数值
    df -h|grep "disk" |awk '{print $5 }'|cut -d "%" -f 1
    #先分隔,再打印
    cat /etc/passwd|grep ":"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}'
    #再末尾加"aaaa"
    cat /etc/passwd|grep ":"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}END{print "aaaa"}'
    

    12、sed

    #打印第2行
     sed -n "2p" student.txt
    #删除第2到4行,没有删除文件
    sed '2,4d' student1.txt
    #追加,没有更改源文件
    sed '2a cheat' student1.txt
    #将第4行99替换成55
    sed '4s/99/55/g' student.txt
    #允许多个条件同时执行
    sed -e 's/liming//g;s/gao//g' student.txt
    

    13、流程控制

    #判断文件是否存在
    test -e student.txt
    echo $?
    #判断文件是否是普通文件
    test -f student.txt && echo yes || echo no
    #判断parm.sh是否比sum.sh新修改
    test parm.sh -nt sum.sh && echo yes || echo no
    #旧修改
    est parm.sh -ot sum.sh && echo yes || echo no
    #-ef 判断inode号是否一致
    #判断23是否大于等于24
    test 23 -ge 24 && echo yes || echo no
    #-eq 相等 -ne 不相等  -gt 大于 -lt 小于  -ge大于等于  -le 小于等于
    #判断$name是不是空 -n不为空判断,==  !=
    test -z "$name" &&echo yes ||echo no
    

    相关文章

      网友评论

        本文标题:Linux脚本编程

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