shell语法及认知

shell简介

- 什么是shell?
  - 是一种服务器端的脚本语言,shell编程就是将shell命令保存到文件(shell脚本)中。
- shell类型?
  - ash、csh、ksh、bash等
  - 查看当前使用的shell:echo $SHELL
  - 查看系统可以的shell:cat /etc/shells
- shell脚本
  - 指定shell解析器执行指定的shell脚本:
    - 创建1.sh文件,添加内容echo 'Hello world!'
    - 执行:bash 1.sh,1.sh文件不需要可执行权限
  - 自解析shell脚本:
    - 创建1.sh文件,在开头添加内容#!/bin/bash,指定shell解析器
    - 添加可执行权限:chmod +x 1.sh
    - 执行:./1.sh
- 说明:
  - shell脚本中的#表示注释,开头的#!表示指定解析环境
  - 单独的自解析的脚本需要添加可执行权限

变量定义

- 变量定义:name='xxx',=两边不能有空格
- 打印变量:echo $name 或 echo ${name}
- 销毁变量:unset name,销毁后就不能再使用了
- 定义常量:readonly name='xxx',修改常量会保存

变量分类

- 本地变量:只适合于当前脚本的变量
- 环境变量:通常整个系统环境都能使用,一般都是纯大写的
  - 查看系统环境变量:env
  - 查看指定环境变量:echo $PATH
  - 若想让一个应用程序任意位置都可使用,将该程序所在目录添加到PATH环境变量:
    - 临时:export PATH=$PATH:新目录
    - 永久:
      - 系统:/etc/profile
      - 用户:~/.profile、~/.bashrc、~/.bash_profile
      - 将临时的export语句放在脚本末尾即可
      - 让配置文件立即生效:source ~/.profile
- 位置变量:
  - $0:表示脚本名字
  - $1~$9:表示传递给脚本的参数
- 特殊变量:
  - $#:传递给脚本的参数个数
  - $*:传递给脚本的所有参数
  - $?:上次命令执行的结果,0表示正确,其他值表示对于的错误

数值类型

- 定义变量或赋值,默认所有的值都是普通的字符,即使时数字
- 若想让变量作为数值进行运算,前面需要加上let
- 示例:
      #! /bin/bash
      
      a=1
      let a=a+2
      echo $a

字符串类型

- 单引号:单引号中的字符都会保持原样,变量不会被解析
- 双引号:双引号中的变量会解析,特殊字符:$、"、\、`
- 反引号:其中的内容会作为命令执行,如
      echo `date`
- 长度计算:echo ${#name}
- 子串提取:echo ${name:2:3},从下标为2开始提取3个字符

数组类型

- 定义:a=(1 2 3)
- 成员访问:echo ${a[1]}
- 所有成员:echo ${a[*]}
- 长度计算:echo ${#a[@]}

各种运算

- test:测试真假
      #!/bin/bash
      
      if test 1 -lt 2;then
      	echo 'ok'
      fi
      
      if [ 1 -lt 2 ];then
      	echo 'ok'
      fi
- 数值大小比较
    符号  	说明  
    -lt 	小于  
    -le 	小于等于
    -gt 	大于  
    -ge 	大于等于
    -eq 	等于  
    -ne 	不等于 
- 字符串比较
    符号  	说明        
    =   	相等        
    !=  	不等        
    -z  	字符串长度是否为0 
    -n  	字符串长度是否不为0
- 文件判断
    符号  	说明              
    -f  	普通文件            
    -d  	目录文件            
    -c  	字符设备            
    -b  	块设备             
    -r  	是否可读            
    -w  	是否可写            
    -x  	是否可执行           
    -s  	文件是否存在,并且至少有一个字符
- 逻辑运算
  - -a:逻辑与(and),也可以使用&&来代替
  - -o:逻辑或(or),也可以使用||来代替
  - !:逻辑非(not)
      #!/bin/bash
      
      if [ 1 -lt 3 -a 2 -lt 3 ];then
      	echo 'ok'
      fi
      
      if [ 1 -lt 3 ] && [ 2 -lt 3 ];then
      	echo 'ok'
      fi 
      
      if [ ! 1 -gt 3 ];then
      	echo 'ok'
      fi

分之结构

- if-elif-else-fi
      #! /bin/bash
      
      if [ 4 -lt 3 ];then
      	echo '111'
      elif [ 2 -gt 3 ];then
      	echo '222'
      else
      	echo '333'
      fi
- case
      #!/bin/bash
      
      # 获取用户输入,-p指定打印信息,输入内容保存到ch中
      read -p 'please input a charactor:'  ch
      
      case $ch in
      	[a-z])
      		echo 'alpha'
      	;;
      	[0-9])
      		echo 'numberic'
      	;;
      	*)
      		echo 'others'
      	;;
      esac

循环结构

- for-in 及 for
      #! /bin/bash
      
      a=(1 2 3)
      
      #for x in ${a[*]}
      #for x in 1 2 3
      #for x in /etc/*
      #for x in {1..10}
      for x in `seq 1 10`
      do
      	echo $x
      done

  for ((i=0;i<${#a[@]};i++))

  do

  	echo ${a[$i]}

  done

  for i in {1..100}

  do

  	let j+=$i

  done

  echo $j

    - `while`:条件成立执行循环
    
      ```shell
      #! /bin/bash
    
      i=1
    
      while [ $i -le 10 ]
      do
      	echo $i
      	#((i++))
      	let i++
      done

- until:条件成立结束循环
      #! /bin/bash
      
      i=1
      
      until [ $i -gt 10 ]
      do
      	echo $i
      	((i++))
      done
- break、continue自行学习

函数使用

- 示例:
      #! /bin/bash

  demo()

  {

  	echo 'in demo func'

  }

  demo

  args()

  {

第一个参数

  	echo $1

第二个参数

  	echo $2

参数个数

  	echo $#

所有参数

  	echo $*

  }

  args 11 22 33

该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值