zoukankan      html  css  js  c++  java
  • linux基础之Shell脚本

    linux基础之Shell脚本

    linux基础之Shell脚本

    什么是shell

    • shell充当计算机软件与硬件之间的翻译官

    执行

    • bash   文件名
    • ./文件名
      • ./需要用户有对文件的执行权限

    输出

    • echo  字符串/'字符串'/"字符串"  都可正常执行

    shell变量

    • 声明变量的方式
      • 变量名=变量值
      • 变量名和变量值之间的等号两边不能有空格
      • 如果变量值中有空格,需要将变量值使用引号引起
    • 读取变量方式
      • ${变量名}
      • 读取的变量需要其他命令一起使用,$单独出现不算命令,它只是读取的方式
    • 取消变量
      • unset变量名
      • linux的变量可以用此方法取消变量

    数组

    • 数组创建
      • 数组名=(arg1   arg2 ...)
    • 数组读取
      • ${数组名[下标/获取所有使用*]}
      • 如果没有指定下标,则默认输出0的位置
      • 下标从0开始
    • 获取数组长度
      • 获取数组长度可以用${#数组名[*]}
    • 更改数组内容
      • 数组名[位置]=新数值

    从控制台读取数据

    • read [选项]  变量名
      • p  "提示信息"   --提示信息
      • t   time[单位秒]   -- 超时自动退出

    查看历史命令

    • history
    • 默认记录一千条,可以修改
      • !行数   -- 直接执行历史上指定行的命令
      • !n会自动执行选择的命令,不能修改

    通配符

    • *   -- 0-N个任意字符
    • ?   -- 一个任意字符
    • [满足条件{a-z/abcd...}]/[^取反]  -- 指定范围/固定字符中匹配一个字符

    管道符

    • ;
      • 语句之间的分隔符
      • 分号两侧的语句按顺序执行
      • 如果分号左侧的命令出现错误,不影响右侧的执行
    • &&
      • 第一个语句正确,判断后面语句
      • 第一个语句错误,后面不进行判断
    • ||
      • 如果一个语句正确,不判断后面的语句
      • 如果第一个语句错误,判断后面的语句
    • |
      • 左侧语句的输出是右侧语句的输入

    输出重定向

    • 把正常输出
      • echo   文件名A   [1正确/2错误]   >   文件名B  覆盖
      • echo   文件名A   [1正确/2错误]   >>   文件名B  追加
    • 正确和错误写入到同一个文件
      • echo   文件名A   >>   文件名B   2>&1
      • echo   文件名A   &>>   文件名B
    • 正确和错误分别写入到不同文件
      • echo   文件名A   >>   文件名B   >>   文件名C  

    shell   script

      • shell脚本
        • 利用shell的命令所写的一个可以执行的"程序",这个程序是纯文本文件,把一些业务操作使用控制语句连接起来,有了一定的逻辑关系,也可以搭配一些shell的语法或重定向,达到我们所要实现的目的
        • 优点是实现功能的自动化操作
      • shell脚本语法
        • 第一行:#!/bin/bash
        • 第二行起,正常业务逻辑
          • 脚本内数字运算
            • $((${num}+100))
            • ${let  "${num}+=100"}
            • -eq   --相等
            • -ne   --不等
            • -gt   --大于
            • -ge   --大于等于
            • -lt   --小于
            • -le   --小于等于
          • 关于字符串的判断
            • ==   --等于
            • !=   --不等于
          • 控制语句
            • 判断--if...else
              • if   [判断式]   逻辑连接符   [判断式]   ;   then  执行语句
              • elif   [判断式]   逻辑连接符   [判断式]   ;   then  执行语句
              • else   执行语句
              • fi
    number=10
    number2=20
    
    if [ ${number} -lt ${number2} ] 
    then
        echo "<"
    elif [ ${number} -gt ${number2} ]
    then
        echo ">"
    elif [ ${number} -eq ${number2} ]
    then
        echo "="
    elif [ ${number} -le ${number2} ]
    then
        echo "<="
    elif [ ${number} -ge ${number2} ]
    then
        echo ">="
    then [ ${number} -ne #{number2} ]
    then
        echo "!="
    else
        echo "error"
    fi
            • 判断--case
              • case   $   变量名   in
                匹配的内容)  执行语句 
                ;;
                匹配的内容)  执行语句 
                ;;
                匹配的内容)  执行语句 
                ;;
                 ...*
              • esac   执行语句
    case ${number} in
        10)
            echo "10"
            ;;
    
        20)
            echo "20"
            ;;
    esac
        echo "其他"
            • 循环
              • while循环
                • 满足条件时循环
                • while   [   执行条件 ]
                  do
                  循环体
                  done
    while [ 条件 ]
    do
        echo "循环体"
    
    done
              • until循环
                • 满足条件时终止
                • until   [   执行条件 ]
                  do
                  循环体
                  done
    
    

    until [ 条件 ]
    do
    echo "循环体"

    
    

    done

     
              • for循环
                • for固定循环
                  • for   临时变量   in 1 2 3 4 5...
                    do
                    循环体
                    done
    for i in [ 指定循环 ]
    do
        echo "循环体"
    
    done
                • 不固定循环
                  • for   ((i=0;i<=10;i++))
                    do
                    循环体
                    done
    for((i = 1 ;i<10;i++))
    do
        echo "循环体"
    
    done
      • 函数
        • 把一些公共的代码封装成一个函数,使用的时候调用
        • 定义一个函数 function   函数名(){函数体}
        • 调用函数时没有括号,用空格分割传参
        • 函数创建时没有形参,获取参数的时候,$number--number代表第几个参数
        • $#代表参数的个数
        • 如果函数有返回值,使用echo返回
        • 参数的个数可以无限个,根据实际情况使用
        • 通过  变量名=$(函数名   参数   参数...)来获得返回值
    function eat() {
            echo "I eat '$1' today"
    }
    #调用
    eat "apple"
    如有问题,请发送邮件至buxiaqingcheng@163.com或者buxiaqingcheng@dingtalk.com
  • 相关阅读:
    hello world !
    从数据库提取数据报错java.sql.SQLException: Column '4' not found.解决方法
    tomcat加载项目无法启动报错(Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/**])解决办法
    tomcat SERVER启动时did not find a matching property错误解决办法
    MVC与SSH(SSM)间的关系
    the resource is not on the build path of a Java project报错解决
    接口的作用
    eclipse error pages打红X的解决方法
    文本提交带单引号引起mysql报错
    五、HTML判断输入长度,体会字体颜色变化
  • 原文地址:https://www.cnblogs.com/zhenzhunaichabujiatang/p/13873528.html
Copyright © 2011-2022 走看看