再多学一点吧

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

shell脚本

因为linux无法同时进行多个指令,所有通过shell作为桥梁(后缀为sh的文件)

  头部注释为#!/bin/sh或者#!/bin/bash(注释可写可不写,建议写上)

  可以通过sh或者bash命名来执行           ./文件名.sh(必须在当前目录下且文件是可执行文件)

 

变量(动态数据类型,没有数据类型的限制,并且必须初始化) 

  只有一个数据类型String,整数其实也是字符串  (所有等号后面可以加引号也可以不加)

  (等号两边不能有空格)  输出20sdsfsf

  ${变量}    ${}表示值引用{}之中的内容分,对相连的内容做了一个区分(后面字符串的拼接截取等等)

 

$0...$n:表示接收外部参数(执行脚本时,传递的参数)

  $0永远表示脚本名称(所以脚本名称不算数,$0也不算第一个参数)
  下标大于一位数只能使用${}获取参数,因为$下标只把第一位数据看做下标
  $*获取所有参数
  $#获取所有参数个数

           $10 是$1 和 0 的拼接

 

 

 

获取长度: ${#变量}

截取:   ${变量:开始位置:长度}          ${str::5}:从0获取5个   ${str:0}:从0获取到末尾

替换: ${变量/旧/新}     替换所有:${变量//旧/新}

       

 

删除:

  从头开始删除
    ${变量#表达式}:匹配第一个删除
    ${变量##表达式}:匹配最后一个删除
  从尾开始删除
    ${变量%表达式}:匹配第一个删除
    ${变量%%表达式}:匹配最后一个删除
    注意:从未开始删除,表达式还是从左向右去写  删除不会再原字符上进行修改,想要修改原字符串只能从新赋值

 

算数运算符

  bash不支持简单的数学运算,可以通过命令实现expr(只 支持整数)

    $[值+值]              `expr 值 + 值`           注意:符号两边需要加上空格,使用乘*需要加 \ 来转义

       

比较运算符: > < >= <=....

  $[值符号值](符号两边空格加不加无所谓)  结果true(1)和false(0)

      

 逻辑运算符: &/and |/or !/not

       

 

 

 if 

  if 判断条件
  then
    判断为true执行的代码
  elif 判断条件
  then
    判断为true执行的代码
    。。。
  else
    判断为false执行的代码
  fi
  注意:else可加可不加

判断条件的写法
[]:[]两边加空格,符号两边加空格并且符号前加转义符
可以使用字母
[[]]:[[]]两边加空格,符号两边加空格
可以使用字母
():弃用
(()):不需要加空格,但是不能使用字母
在使用变量时,不需要使用$

         right

 

for:  

java格式:
for ((初始化变量;判断条件;控制语句))    两个括号
do
执行语句
done

     使用let在计算时可以直接使用变量

python格式:
for 变量 in 结果集
do
执行语句
done

 

 

结果集:
{开始..结束}含头含尾,不能引用变量
`seq 开始 结束`含头含尾

 

 

 数组:存储多个元素,数据类型可以不同,元素元素之间以空格切分

    ${数组[下标]}     直接引用数组变量,默认获取下标为0的元素下标使用*表示获取所有

    获取长度:       ${#数组[*]}

      

 

 read:键盘录入:read 变量1 变量2 ...变量n

  键盘录入时,允许给多个变量进行赋值,值和值之间以空格切分

 

 获取当前日期时间:date空格+"%Y-%m-%d %H:%M:%S"

 格式化日期时间:date -d today +"%Y-%m-%d %H:%M:%S"

 加减日期时间:

date +%Y%m%d //显示前天年月日
date +%Y%m%d --date="+1 day" //显示前一天的日期
date +%Y%m%d --date="-1 day" //显示后一天的日期
date +%Y%m%d --date="-1 month" //显示上一月的日期
date +%Y%m%d --date="+1 month" //显示下一月的日期
date +%Y%m%d --date="-1 year" //显示前一年的日期
date +%Y%m%d --date="+1 year" //显示下一年的日期

 

重定向:

标准输入文件(stdin):stdin的文件描述符为0,默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,向stderr流中写入错误信息。

使用>,>>默认是把正确信息写入文件
想要把错误信息和正确信息写入文件需要后面追加2>&1(把错误信息当做正确信息去处理)

 

定时器:格式:*(分钟) *(小时) *(星期) *(几号) *(月份) commend

  通过crontab -e添加定时任务(会进入编辑模式) 要给全部路径

  查看定时任务是否执行了,看日志tail -f /var/log/cron    

  * * * * * 每分钟          */1 * * * * 每分钟            0 */1 * * * 每小时

 

  

 

 

  

 

 

 

 

 

 

  

posted on   糟糟张  阅读(65)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示