博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell笔记
阅读量:6068 次
发布时间:2019-06-20

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

# $Name:         nginx_status.sh# $Version:      v1.0# $Function:     Nginx Status# $Author:       lvhanzhi# $organization: www.lvhanzhi.xyz# $Create Date:  2016-06-23# $Description:  Monitor Nginx Service Status############################################################1.shell是命令解释器2.shell脚本=规范+语法+系统命令3.shell脚本能做什么    减少重复性、周期性的工作。    减少故障的几率。4.解释器   #!/bin/bash    #!/bin/bash    脚本中如果不写,在执行过程中如果./方式执行(需要权限),默认调用bash命令翻译该文件    脚本中如果写了使用什么解释器翻译,那在使用./时则会调用对应的解释器执行5.执行方式    bash /tmp/test -->直接使用解释器器执行脚本,无需执行权限     ./test.sh -->以./运行的方式执行,需要拥有执行权限6.变量    变量怎么定义        自定义 规范,命名  变量引用${}         系统定义        预定义变量   $$ $# $@ $* $?         位置参数变量,执行脚本后面的参数,比如  /etc/init.d/network start     ${#变量名} 统计变量长度    set 用来显示本地变量    env 用来显示环境变量    export 用来显示和设置环境变量    unset xxx 取消变量xxx    [root@centos7 ~]# var="hello world" #定义变量    [root@centos7 ~]# echo $var #输出变量    hello world    [root@centos7 ~]# echo ${var}_aaa     hello world_aaa    [root@centos7 ~]# echo "$var \$00" #转义    hello world $007.传参    [root@centos7 shell01]# vim variable.sh      [root@centos7 shell01]# bash variable.sh 1 2 3              #!/bin/bash                                      echo "#当前shell脚本的文件名: $0"           #当前shell脚本的文件名: variable.sh    echo "#第1个shell脚本位置参数:$1"           #第1个shell脚本位置参数:1    echo "#第2个shell脚本位置参数:$2"           #第2个shell脚本位置参数:2    echo "#第3个shell脚本位置参数:$3"           #第3个shell脚本位置参数:3    echo "#所有传递的位置参数是: $*"             #所有传递的位置参数是: 1 2 3    echo "#所有传递的位置参数是: $@"             #所有传递的位置参数是: 1 2 3    echo "#总共传递的参数个数是: $#"             #总共传递的参数个数是: 3    echo "#当前程序运行的 PID 是: $$"            #当前程序运行的 PID 是: 22685    echo "#上一个命令执行的返回结果: $?"         #上一个命令执行的返回结果: 0    $*和$@的区别:加引号$*以行的形式显示,$@以列的形式显示    $n,n为10或10以上要加{},${10}8.计算echo "$(($(date +%Y)+1))"    [root@centos7 shell01]# echo $(find -name "*.sh")    ./env.sh ./variable.sh9.交互 read -p "是否确认此操作[y/n]:" read_change10.变量的替换    1.从前往后删除变量内容    [root@bgx ~]# url=www.sina.com.cn   #定义变量    [root@bgx ~]# echo ${url}           #输出变量的值    www.sina.com.cn    [root@bgx ~]# echo ${url#*.}    #从前往后,最短匹配    sina.com.cn    [root@bgx ~]# echo ${url##*.}   #从前往后,最长匹配    cn    2.从后往前删除变量内容    [root@bgx ~]# url=www.sina.com.cn   #定义变量    [root@bgx ~]# echo ${url}           #输出变量结果    www.sina.com.cn    [root@bgx ~]# echo ${url%.*}        #从后往前,最短匹配    www.sina.com    [root@bgx ~]# echo ${url%%.*}       #从后往前,最长匹配 贪婪匹配    www    3.变量内容替换    [root@m01 shell01]# echo ${url}    www.sina.com.cn    [root@m01 shell01]# echo ${url/n/N}    www.siNa.com.cn    [root@m01 shell01]# echo ${url//n/N}    www.siNa.com.cN11.整数运算  expr $(()) $[]   +-*/%    expr         [root@centos7 ~]# n1=10        [root@centos7 ~]# n2=20        [root@centos7 ~]# expr $n1 + $n2        30        [root@centos7 ~]# expr $n1+$n2        10+20        [root@centos7 ~]# expr $n1 * $n2        expr: syntax error        [root@centos7 ~]# expr $n1 \* $n2        200    $(())        [root@centos7 ~]# echo $(( $n1 \* $n2 ))        -bash: 10 \* 20 : syntax error: invalid arithmetic operator (error token is "\* 20 ")        [root@centos7 ~]# echo $(( $n1 * $n2 ))        200        [root@centos7 ~]# echo $(( $n1*$n2 ))        200    $[]        [root@centos7 ~]# echo $[$n1 * $n2]        200        [root@centos7 ~]# echo $[$n1*$n2]        200        [root@centos7 ~]# echo $[$n1\*$n2]        -bash: 10\*20: syntax error: invalid arithmetic operator (error token is "\*20")12.小数运算bc awk    [root@bgx shell]# yum install bc -y    [root@bgx shell]# echo "2*4" |bc    8    [root@bgx shell]# echo "2^4" |bc    16    [root@bgx shell]# echo "scale=2;6/4" |bc    #取2位小数    1.50    [root@bgx shell]# awk 'BEGIN{print 1/2}'    0.513.if    if [ $1x == "ab"x ]; then        echo "you had enter ab"    elif [ $1x == "cd"x ]; then             echo "you had enter cd"    else        echo "you had enter unexpected word"    fi    -eq =、-ne !=、-gt >、-ge >=、-lt <、-le <=    if grep 'aaa' /etc/passwd;then        echo ok    else        echo error    fi    if文件比对方式        参数  说明  示例        -e  如果文件或目录存在则为真                    [ -e file ]        -s  如果文件存在且至少有一个字符则为真           [ -s file ]        -d  如果文件存在且为目录则为真                   [ -d file ]        -f  如果文件存在且为普通文件则为真             [ -s file ]        -r  如果文件存在且可读则为真                    [ -r file ]        -w  如果文件存在且可写则为真                    [ -w file ]        -x  如果文件存在且可执行则为真                   [ -x file ]        if [ -e /etc/hostss ];then        echo "ok"        else            echo "err"        fi        [ -d $dir ] && tar zcf etc.tar.gz $dir || echo "$dir目录不存在"    if字符串比较        参数          说明                      示例        ==              等于则条件为真             [ "$a" == "$b" ]        !=              不相等则条件为真            [ "$a" != "$b" ]        -z              字符串的长度为零则为真     [ -z "$a" ]         #没有内容为真        -n              字符串的长度不为空则为真    [ -n "$a" ]         #有内容则为真        str1 > str2     str1大于str2为真            [ str1 > str2 ]        str1 < str2     str1小于str2为真            [ str1 < str2 ]    多条件判断        -a 并且   [ 1 -lt 2 -a 2 -gt 1 ];echo $?        -o 或者        [[]]使用正则 ||或 &&并且,不能用-a [[ 1 -lt 2 && 2 -gt 1 ]];echo $?        [ 1 -lt 2 ] && [ 2 -gt 1 ]     正则匹配        [[ "$num" =~ ^[0-9] ]];echo $?    小数比较        [ 1.5 \> 2 ] && echo $? || echo $?    判断是否为整数        方式一:            [root@centos7 ~]# a=1            [root@centos7 ~]# expr $a + 1 &>/dev/null  && echo $? || echo $?            0            [root@centos7 ~]# a=1.1            [root@centos7 ~]# expr $a + 1 &>/dev/null  && echo $? || echo $?            2            [root@centos7 ~]# a="hello world"            [root@centos7 ~]# expr $a + 1 &>/dev/null  && echo $? || echo $?            2        方式二:            if [[ $name_end =~ ^[0-9]+$ ]];then                    echo "是整数"            else                    echo "不是整数"            ficase    case "变量" in        "变量1"|1)            ;;         "变量2")          ;;         *)           ;;    esac输出颜色[ok]    [root@centos7 scripts]# vim daemon.sh    #!/bin/bash    source /etc/init.d/functions    action "true" /bin/true    action "false" /bin/false    [root@centos7 scripts]# sh daemon.sh     true                                                       [  OK  ]    false                                                      [FAILED]for循环:    for ((i=1; i<=100; i++))    do        echo $i    done    for i in {1..100}    do        echo $i    done    for i `seq 1 100`    do        echo $i    done    for line in `cat all_db_name.txt`    do     mysqldump -uroot -p123 -B $line >/tmp/${line}.sql    done    #!/usr/bin/bash    for (( a=1,b=9;a<10;a++,b-- ))    do        echo num is $a $b    donefor循环自定义分隔符 IFS=$'\n'    OLD_IFS=$IFS    IFS=$'\n'    for i    do    done    IFS=$OLD_IFS    for i inlet a--进度条    #!/bin/sh    b=''    for ((i=0;$i<=100;i+=2))    do            printf "progress:[%-50s]%d%%\r" $b $i            sleep 0.1            b=#$b    done    echo并发 {代码} &  等待进程结束再往后执行waitlet i++echo * #输出当前文件的所有文件while默认按行取值    [root@centos7 scripts]# vim a.txt    aaa1    aaa2    aaa3    [root@centos7 scripts]# vim test.sh     #!/bin/bash    while read line    do        echo $line    done
单词[root@oldboyedu shell08]# echo "the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation"|sed 's#[.,]# #g'|xargs -n1|sort |uniq -c |sort -nr#方法一:sort排序-->字母[root@oldboyedu shell08]# echo "the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation"|sed 's#[.,]# #g'|grep -o '[a-Z]'|sort |uniq -c|sort -nr#方法二:awk排序-->字母[root@oldboyedu shell08]# echo "the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation"|grep -o '[a-Z]'|awk '{code[$1]++} END { for (i in code) print code[i],i}'|sort -nr#方法二:awk排序-->单词[root@oldboyedu shell08]# echo "the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation"|sed 's#[.,]# #g'|xargs -n1|awk '{code[$1]++} END { for (i in code) print code[i],i}'|sort -nr#方法三:shell数组排序-->字母[root@oldboyedu shell08]# cat 09.sh #!/usr/bin/bashdeclare -A array_txttxt="the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation"txt=$(echo $txt |sed 's#[.,]# #g')for i in $txtdo let array_txt[$i]++done #2.遍历数组for j in ${!array_txt[@]}do echo 次数是: "${array_txt[$j]}" "索引$j"done#方法三:awk排序-->单词[root@oldboyedu shell08]# cat 10.sh #!/usr/bin/bashdeclare -A array_txtte (){txt="the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation"txt=$(echo $txt |grep -o "[a-Z]")for i in $txtdo let array_txt[$i]++done#2.遍历数组for j in ${!array_txt[@]}do echo 次数是: "${array_txt[$j]}" "索引$j"done}te |sort -t ":" -k 2 -nr

转载于:https://www.cnblogs.com/lvhanzhi/p/10749049.html

你可能感兴趣的文章
CSS设计指南之浮动与清除
查看>>
Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig
查看>>
adb shell am 的用法
查看>>
codeforces 85D D. Sum of Medians Vector的妙用
查看>>
Android进程的内存管理分析
查看>>
php -- 反射ReflectionClass
查看>>
Nginx反向代理和负载均衡部署指南
查看>>
java获取当前日期时间代码总结
查看>>
互联网广告学——程序化购买
查看>>
新版本chrome浏览器控制台怎么设置成独立的窗口
查看>>
oracle中nvarchar2字符集不匹配
查看>>
Mysql5.6.22源代码安装
查看>>
每天一个linux命令(5):rm 命令
查看>>
mksquash_lzma-3.2 编译问题
查看>>
【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
查看>>
PHP JAVA Bridge桥的最新使用
查看>>
免费工具
查看>>
锋利的JQuery —— DOM操作
查看>>
Swift应用开源项目推荐
查看>>
BZOJ1845 : [Cqoi2005] 三角形面积并
查看>>