zoukankan      html  css  js  c++  java
  • shell基础

    shell:
    shell是linux内核和应用程序间的解释程序,向内核翻译及传达用户和程序的指令
    正则表达式 w s d  用法:
    . 匹配除换行符以外的任意字符 
    w 匹配字母或数字或下划线 
    s 匹配任意的空白符 
    d 匹配数字                      等价于[0-9]
    D 匹配非数字字符
     匹配单词的开始或结束 
    ^ 匹配字符串的开始 
    $ 匹配字符串的结束
    其中,[^A-Z]表示除了不包含大写字母,^取反;^[A-Z]表示以大写字母开头
    shell 脚本提前写好的可执行语句.
    使用变量$X 变量失效uset X
    示例:
    #!/bin/bash
    useradd $a 2> /temp/err.log
    echo 1234567 | passwd --stdin $1 &>/dev/null
    ls -l ./ | wc -l
    统计问文件的数量

    $0 当前脚本的文件名
    $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
    $# 传递给脚本或函数的参数个数。
    $* 传递给脚本或函数的所有参数。
    $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
    $? 上个命令的退出状态,或函数的返回值。
    $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

    #!/bin/bash
    dir="/root/chrom"
    fi [! -e $dir]
    then mkdir -p $dir

    #!/bin/bash
    #-c 3 发送三个测试包 -i 0.2 时间间隔 -W 1等待时间 $1 获得终端输入
    ping -c 3 -i 0.2 -W 1 $1 &> /dev/null
    if [ $? -eq 0 ] ; then
    echo "host $1 is up"
    else
    echo "host $1 is down"
    fi


    #!/bin/bash
    #把输入读入 JF
    read -p "请输入积分 (0-100):" JF
    #要有空格
    if [ $JF -ge 90 ] ;then
    echo "$JF 分 "
    elif [$JF -ge 80]; then
    echo "$JF 分"
    fi

    创建并进入目绿:
    mkcd(){
    mkdir $1
    cd $1
    }
    循环:
    for i in $sun

    case : 以;;结束分支
    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。

    for i in {1.10}
    do
    experss
    done

    检测多个主机的存活状态:
    # 范围用 ..
    for i in {1..254}
    do
    ping -c 3 -i 0.2 -W 1 192.168.3.$i &> /dev/null
    if [ $? -eq 0];then
    echo "Host 192.168.3.$i is up"
    else
    echo "Host 192.168.3.$i is down"
    fi
    done


    i=1
    while [ $i -le 5]
    do
    echo
    done
    #[] 表达式
    num = $[RANDOW%100+1]
    while :
    do
    read -p " input 1---100:" guess
    if [ $gess -eq $num ];then
    echo " good"
    else
    echo "bad"
    fi

    列出不在线的主机:
    i=1
    while [ $i -le 254 ]
    do
    ip="192.168.3.$i"
    #2> /dev/null” 代表忽略掉错误提示信息。
    # 不显示ping的信息 &> /dev/null
    & 是等于的意思
    ping -c 3 -i 0.2 -W 1 $ip &> /dev/null
    if [ $? -eq 0 ];then
    echo "Host is up"
    fi
    let i++
    done


    中断:
    for i in {1..254}
    do
    [ $i -eq 3]&&break
    done
    echo " over "


    球和:
    sum=0;
    while:
    do
    read -p "inpout 0 is end:" x
    #&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;
    #||则与&&相反。如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。
    [ $x -eq 0] && break
    sum=$[sum+x]
    done
    echo "sum is $sum"
    字串截取:
    ${var:起始位置:长度}
    expr substr "$var" 起始位置 长度
    echo $var | cut -b 起始位置 长度

    字串一个替换:
    ${var/old/new}
    替换全部
    ${var//old/new}

    字符串掐头:从左网友
    ${var#*key}
    ${var##*key} 删除匹配最远的
    字符串去尾: 从右往左
    ${var%key*}
    ${var%%key*}
    MDIR="/var/spool/mail/root"
    echo ${MDIR%o*}



    批量修改后最名:
    for FILE in *.doc
    do
    mv $FILE ${FILE%.doc}.txt
    done

    初值检测:
    取值: ${var: -word}
    echo ${NM:-Tatrena}

    球和:
    read -p "input num:" x
    x=${x:-1};i=1;sum =0
    while [ $i -le $x ]
    do
    let sum+=i;let i++
    done

    数组:
    数组名=(val1 val2 val3...valn)

    取值: ${arry[index]}
    ${arry[@]}
    ${#arry[@]}
    ${arry[@]:b_index:len}

    expect 基于TCL编程写的自动交互程序

    host=192.168.3.104
    expect << EOF
    spawn ssh $host
    expect "password" {send "123456 "}
    expect "#" {send "touch /a.txt "}
    expect "#" {send "exit "}

    正则表达式:
    egrep [option] 'exoress' file
    前置命令 | egrep [选项] '则正式'
    == grep
    ^ 匹配首字母 ^abc 以abc开头的
    $ 匹配行尾 abc$ 以abc结尾
    . 匹配单个 除换行符之外的任意单个字符
    + 一个或则多个
    ? 最多一个
    * 匹配任意次

    {n} 匹配n次
    {n,m} 匹配n-m 次
    {n,} 匹配至少n次
    <th 匹配以th开头的单词
    <root> 结尾 和root 一样




  • 相关阅读:
    062 Unique Paths 不同路径
    061 Rotate List 旋转链表
    060 Permutation Sequence 排列序列
    059 Spiral Matrix II 旋转打印矩阵 II
    058 Length of Last Word 最后一个单词的长度
    057 Insert Interval 插入区间
    bzoj3527: [Zjoi2014]力
    bzoj2194: 快速傅立叶之二
    bzoj2820: YY的GCD
    bzoj2005: [Noi2010]能量采集
  • 原文地址:https://www.cnblogs.com/countryboy666/p/10959669.html
Copyright © 2011-2022 走看看