zoukankan      html  css  js  c++  java
  • [sh]shell语法小结

    参考

    基础语法

    数字比较 -lt -eq -gt 
    
    [ `ps -ef|grep nginx|grep -v grep|wc -l` -eq 0 ]
    
    
    str比较  == !=
    
    [ $USER == "root" ]
    
    -z  变量未定义或为空串都会命中-z
    [ -z $1 ] 
    
    数字运算
    
    - 整数
    echo $((1+2))  # 不能计算小数
    echo "1+2"|bc
    
    - 小数
    echo "1.2+2.3"|bc
    
    - 文件检测
    -f   [ -f /etc/fstab ] && echo 'xx'
    -d
    -e
    -rwx
    
    $? $# 
    $0 $1 $2
    
    
    $?
    0 正常
    1 失败
    
    - if
    
    if then
    fi
    
    if ;then
    elif ;then
    fi
    
    if [ $age -gt 100 ];then
        echo "age gt 100"
    elif [ $age -gt 50 ];then
        echo "get gt 50"
    fi
    
    - for
    
    for i in `cat `;do
    done
    
    
    注: for对横排空格分隔 和 一行一个item都支持遍历
    
    
    - 批量创建用户
    for user in `cat user_list.txt`;do
        useradd $user > /dev/null 2>&1
        if [ $? -eq 0 ];then
            echo "created user $user succ"
        else
            echo "created user $user faild"
        fi
    done
    
    - 批量ping
    for ip in `cat ip_list.txt`;do
        ping -i 0.2 -c 3 -W 2 $ip > /dev/null 2>&1
        if [ $? -eq 0 ];then
            echo "host $ip online"
        else
            echo "host $ip offline"
        fi
    done
    
    
    - while(好处是支持死循环)
    
    while :;do
        read -p '输入新运数字: ' num
        if [ -z $num ];then
            continue
        fi
        if [ $num -gt 100 ];then
            echo "succ"
        else
            echo "faild"
        fi
    done
    
    - case分支,  好处是支持正则
    
    while :;do
        read -p "请输入一个字符" char
    
        case $char in
        [a-z]|[A-Z])
            echo "输出的值是字符"
            ;;
        [0-9])
            echo "输入的是数字"
            ;;
        *)
            echo "default running"
        esac
    done
    
    

    常用命令

    find
    grep
    sed
    awk
    
    - cat命令
    name="mm"
    age=22
    cat > file.txt <<EOF
    name = $name
    age = $age
    EOF
    
    > /dev/null 2>&1
    
    文件描述符
    0 stdin
    1 stdout
    2 stderr
    
    - 生成序列
    seq -s ' '  10
    
    echo {1..10}
    
    
    ping命令 
        -i  interval
        -c  count
        -W  timeout
    

    正则

    ${name}     # 引用变量
    $(date +%F) # 表达式
    
  • 相关阅读:
    CDZSC_2015寒假新人(4)——搜索 A
    第一次组队赛---2010年全国大学生程序设计邀请赛(福州)L
    ZSC新生赛 沼跃鱼早已看穿了一切
    ZSC新生赛 聪明的员工
    CDZSC_2015寒假新人(1)——基础 I
    Linux 系统时间和硬件时间
    Python 深浅复制
    Python 函数内省
    Python 函数参数
    Python 可调用对象
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/11275591.html
Copyright © 2011-2022 走看看