• shell 脚本的学习


    1. shell脚本

    通过一系列程序语句帮我完成重复工作

    2. 脚本的文件头最好记录好如下内容:

      (1) 功能 (2)版本信息 (3)作者与联系方式 (4) 版权声明方式 (5) 历史记录 (6) 特殊命令用 绝对路径 执行 (7) 运行时需要的环境变量预先声明与设置

    3.学习

    $( (计算式) )   可以进行整数计算

    bc : 计算小数点可以用bc  

    echo "1.1 *5 " | bc

    bash和source: 我们执行命令一般用的是 

    bash test.sh

    或者

    sh test.sh

    但是bash或者sh执行命令都是启动一个新的子进程来进行操作,如果我们想在父进程中执行命令的话,需要执行source

    source test.sh

    这样test.sh中定义的变量就会在父进程中生效.

    test: 测试某个命令是否存在 test -e  [filename]   test有很多选项,可以判断文件字符串,权限等,详情 --help

    []:我们可以使用中括号来达到和test相同的效果,比如:

    [ -z "${HOME}" ]; $?

    如果 ${HOME} 不存在,会输出1,存在会输出 0.还可以比较字符串,比如:

    [ "123" == "123" ]

    我们也可以通过 $? 判断结果,需要注意的是前后都需要空格,双等号前后也需要.

    参数最好也要用双引号括起来,否则会报错比如:

    name="li  li"
    [ ${name} == "li li" ]

    把${name}用双引号括起来就可以,"${name}",不括起来的话就会比较 li li == "li li" 有多个参数.

    shell的默认变量:

    $# 参数个数

    $@所有变量

    $* 同$@ 用空格分割

    $1 第一个参数

    $2 第二个参数以此类推

    shift:变量偏移可以把变量起始位置向后偏移,也就是删除了第一个变量

     if:语法

    if [ "${name}" == "hello" ]
        echo "Yes"
    elif [ "${name}" == "world" ]
        echo "Yes world"
    else 
        echo "NO"
    fi

    基本语法就这,和其他语言差不多

    netstat -tuln:查看启动的服务 127.0.0.1只对本机开放,如果是0.0.0.0则对所有网络开放

    case语法:

    case $变量名称 in 
        "ONE")
            echo "ONE"
            ;;
        "TWO")
            echo "TWO"
            ;;
        *)
            echo "Default"
            ;;
    esac

    其实和switch差不多,没什么好说的

    function:函数 

    function printHello(){
        echo "Hello"  
    }
    printHello

    可以定义函数, 也可以在函数后面加参数,用$1接收,这时候的$1指的是函数的参数,不是脚本的参数

    循环:

    不定循环:

    while [condition]
    do
      程序
    done
    #当条件满足一直循环
    
    until [condition]
    do 
     程序
    done
    #当条件满足终止循环

    固定循环:

    for var in con1 con2...
    do 
         程序
    done

    还可以用类似于java中的for循环来处理

    for (( i=1; i<=5; i=i+1 ))
    do
        echo "Hello"
    done

    seq: 比如 seq 1 100  输出1到100连续的数字

    sh可以在执行脚本前进行校验  sh -n hello.sh 加上-n参数就可以,其实vim就有校验功能,其实都差不多。 -v 执行脚本前先输出脚本内容,-x执行过程显示到屏幕上

  • 相关阅读:
    Tomcat && Servlet
    List,Set,Collections工具类
    多表查询
    常用的API--集合
    msmpeng.exe阻止移动硬盘弹出
    接口400错误解析
    JDBC/Mybatis连接数据库报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
    tomcat启动报错:A child container failed during start
    PAT 1019 数字黑洞
    PAT 1017 A除以B
  • 原文地址:https://www.cnblogs.com/lishuaiqi/p/15120511.html
Copyright © 2020-2023  润新知