shell脚本快速上手

第一个shell脚本

我们使用豆包快速生成一个脚本,并让它做解释

shell脚本的文件扩展名并没有严格的要求(扩展名并不影响脚本执行),但为方便阅读,我们约定俗成的使用.sh作为扩展名,同理常见的shell脚本第一行的#!也是如此,是一个约定标记,告诉系统使用什么shell来执行

#! /bin/bash
echo $0
echo $SHELL

$0的变量值当前使用的脚本名称
在linux中要想让脚本运行需要添加执行权限

chmod +x  shell脚本

变量定义

使用变量名=值的形式,引用变量时添加符号$(变量名和等号之间不能有空格),同时在习惯上,我们常使用大写表示常量(意义上等价于readonly修饰变量)

CPU_THRESHOLD=80
echo $CPU_THRESHOLD

常见的环境变量

  • PATH:用于存储可执行文件的搜索路径。
  • HOME:当前用户的家目录。
  • USER:当前登录的用户名。
  • SHELL:当前使用的Shell解释器。
  • PWD:当前工作目录。

常见的特殊变量

  • $0:当前脚本的名称。
  • 1、2、$3...:位置参数,表示传递给脚本的参数。
  • $#:传递给脚本的位置参数的数量。
  • $*:所有位置参数的列表。
  • @:所有位置参数的列表,与*类似,但每个参数都是作为一个独立的字符串传递的。
  • $?:上一个命令的退出状态。0表示成功,非0表示失败。

变量类型

整形没啥好说的,需要注意计算,使用三种语法

  1. $((运算式))
num1=1
num2=2
echo $((num1+num2))
  1. $[运算式]
echo $[$num1+$num2]
  1. expr 运算式
    需要注意运算符之间要有空格
echo `$num1 + $num2`

shell默认不支持浮点数计算,需要安装第三方库bc

yum -y install bc

echo "$num1+$num2" | bc

关系运算表达式使用中括号语法

if [ $num1 != $num2 ];then
  echo "no"
fi

if [ $num1 -lt $num2 ];then
  echo "ok"
fi

更复杂的场景就自己百度吧

字符串

  • 不加引号:默认字符串赋值,不能带空格,有变量时会先解析变量
  • 单引号:所见即所得,原样输出,不解释特殊字符
  • 双引号: 内容中有变量会先解析,不影响原有的语法
  • 反引号: 如果需要调用命令的输出或命令的输出赋予变量,则使用,类似$(命令)

获取字符串长度在变量名前加#即可

A=`date`
echo $A
echo '$A'
echo "$A"
echo ${#A}

需要注意检测两个字符串相等使用=和==一样,但建议使用==

数组

仅支持一维数组,使用小括号包裹,元素使用空格分隔

F=(A 123 A)
echo ${F[0]}
echo ${#F[*]} #计算数组元素个数
echo ${F[*]} #打印所有
for i in ${F[*]};do #迭代
    echo $i;
done

流程控制

上面也提到过了使用if then fi
中间有分支就elif / else
for循环就for in do 和done

函数

shell函数定义不需要关键字

Bar(){
  echo "$1"
}
Bar 1
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容