第一个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:当前脚本的名称。
-
2、$3...:位置参数,表示传递给脚本的参数。
- $#:传递给脚本的位置参数的数量。
- $*:所有位置参数的列表。
-
*类似,但每个参数都是作为一个独立的字符串传递的。
- $?:上一个命令的退出状态。0表示成功,非0表示失败。
变量类型
整形没啥好说的,需要注意计算,使用三种语法
- $((运算式))
num1=1
num2=2
echo $((num1+num2))
- $[运算式]
echo $[$num1+$num2]
- 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