• shell脚本基本用法


    下面是一些简单常用的脚本,工作中可能会用到,记录一下。

    #!/usr/bin/env bash
    
    #变量[=两边不要有空格], 在使用的时候需要用${变量名} 或者是$变量名
    name="san"
    echo $name
    allName="zhang $name"
    echo $allName
    
    
    #-------------------------------------------------------------------------------
    
    注意: 在IDEA中编写shell的时候,要将行尾符号设置为LF方式,而不是windows 的CRLF方式。
    
    
    
    #-------------------------------------------------------------------------------
    $# 是传给脚本的参数个数
    $0 是脚本本身的名字
    $1 是传递给该shell脚本的第一个参数
    $2 是传递给该shell脚本的第二个参数
    $@ 是传给脚本的所有参数的列表
    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$ 是脚本运行的当前进程ID号
    $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
    
    #-------------------------------------------------------------------------------
    
    #变量做运算
    # $[a + b]
    a=4
    b=5
    c=$[a + b]
    echo "c=$c"
    echo $[a * b]
    echo $[a + b]
    echo $[3 * 10]
    
    #-------------------------------------------------------------------------------
    
    #if条件
    # [注意:1. 中括号两边需要有空格]
    #- eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
    #-ne —比较两个参数是否不相等
    #-lt —参数1是否小于参数2
    #-le —参数1是否小于等于参数2
    #-gt —参数1是否大于参数2
    #-ge —参数1是否大于等于参数2
    #-f — 检查某文件是否存在(例如,if [ -f "filename" ])
    #-d — 检查目录是否存在
    
    if [ $c -lt 10 ]
    then
        echo "if 执行了。。"
    fi
    
    #-------------------------------------------------------------------------------
    
    #if-else条件
    if [ $c -gt 10 ]
    then
        echo "1";
    else
        echo "2";
    fi
    
    #-------------------------------------------------------------------------------
    
    #if else-if else
    if [ $c -gt 10 ] && [ $b -lt 5 ]
    then
        echo "if-elseif -1";
    elif [ $c -lt 10 ]
    then
        echo "if-elseif -2";
    else
        echo "if-elseif -3";
    fi
    
    #-------------------------------------------------------------------------------
    
    #swith
    
    #-------------------------------------------------------------------------------
    
    #数组
    array_name=(value1 valuen)
    my_array=(A B "C" D)
    
    #-------------------------------------------------------------------------------
    
    #for循环
    # 遍历数组[循环数组的方式]
    for item in ${my_array[@]}
    do
        echo "循环中 $item"
    done
    
    #遍历列表[]
    for var in item1 item2 item3
    do
        echo "for列表输出-----$var"
    done
    
    #-------------------------------------------------------------------------------
    
    #while循环
    a=1
    b=10
    c=20
    #while condition  #单条件用(),双层括号中间不能有空格;多条件用[]
    #while (($a <=5))  单条件
    while [ $a -lt 5 ] && [ $b -gt 5 ]  && [ $c -gt 0 ]  #多条件
    do
        echo "while循环测试 a=$a";
        let "a++"  # i++操作
        let "b--"
    done
    
    #-------------------------------------------------------------------------------
    
    #函数定义
    #函数注意事项:
    #1. 函数调用一定要在函数声明之后
    #2. 函数的返回值只能是数值,范围0-256
    #3. 函数内的局部变量用local声明,且作用范围为函数体内
    #4. 定义函数的形参不用显式声明
    
    function testfun(){
        local var="函数内的局部变量"    #局部变量
        local var1=4
        echo "参数 $1"
        echo "参数 $2"
        echo "参数 $3"
        echo "所有的参数一块输出 $*"
        echo $var
        echo $var1
        return
    }
    
    #函数调用
    testfun param1 param2
    
    total=$(testfun param1 param2)
    echo "----------------------------------"
    echo $total
    
    #-------------------------------------------------------------------------------
    
    # shell脚本结合 linux命令使用
    #注意:
    #1. Linux 的命令可以直接在shell中使用
    #2. 单行命令后面可不用强制加分号 ; 但是如果单行有多个命令,则每个命令后面需要加分号
    
    #第一种方式 data=`command`
    data=`ls . |wc -l`
    data=`find E:/home/sdata/sdata3-staticindex/ -name "*.data" |xargs grep "1001681445" `
    #echo $data
    
    
    #第二种方式 data=$(command)
    data1=$(ls .|wc -l)
    #echo $data1
    
    #-------------------------------------------------------------------------------
    # shell 脚本代码块直接在命令行执行 ,直接用()包住即可
    (
    #for fileName in `find . -name "30012.2019010*.log" |more`
    for fileName in  $(find . -name "30012.2019010*.log"|more)
    do
        echo "start unzip $fileName"
        unzip $fileName
    done
    )
    
    
    
    
  • 相关阅读:
    动态代理有啥用(总结)
    ES6随笔--各数据类型的扩展(4)--数组和对象
    ES6随笔--各数据类型的扩展(2)--数值
    ES6随笔--各数据类型的扩展(1) --字符串和正则
    ES6随笔--声明变量
    CommonJS随记
    DOM练习小记--一个简单的Web页面游戏
    js随笔--关于事件
    js随笔--关于this
    js随笔--循环里的弯弯绕
  • 原文地址:https://www.cnblogs.com/henuzyy/p/10347772.html
Copyright © 2020-2023  润新知