• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
珍珠奶茶不加糖
博客园    首页    新随笔    联系   管理    订阅  订阅
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
posted on 2020-10-25 15:15  珍珠奶茶不加糖  阅读(117)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3