shell 解释器
[root@node04 shells]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
脚本编写规范
首行描述解释器: #!/bin/bash
执行shell脚本
方式①:bash 脚本名称 脚本参数
方式②:sh 脚本名称 脚本参数
方式③:./脚本名称 脚本参数【./脚本名称之间没有空格】
变量声明
变量名=”值”【中间不能有空格】
变量名要求 字母或下划线或数字(开头不能是数字)构成
删除变量 只读变量
删除 unset 变量名
只读 readonly 变量名
字符串使用
双引号(””):内部可以使用变量
单引号(‘’):内部所有的原样输出
反引号(``):表示可执行
字符串长度及截取
长度: echo ${#skill}
截取: echo ${str:2:2} 【在第二个字符开始截取截取两位】
脚本参数传递
bash 脚本名 参数1 参数2 参数3 。。。。。。
参数处理说明
$#传递到脚本的参数个数$*以一个单字符串显示所有向脚本传递的参数。 如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$$脚本运行的当前进程ID号$!后台运行的最后一个进程的ID号$@与
∗
相
同
,
但
是
使
用
时
加
引
号
,
并
在
引
号
中
返
回
每
个
参
数
。
如
"
*相同,但是使用时加引号,并在引号中返回每个参数。 如"
∗相同,但是使用时加引号,并在引号中返回每个参数。如"@“用「”」括起来的情况、以"$1" “
2
"
…
"
2" … "
2"…"n” 的形式输出所有参数。$-显示Shell使用的当前选项,与set命令功能相同。$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
算数运算符
加法计算 expr 2 + 2 【注意空格】 乘法计算 expr 2 \* 2 【注意空格】
流程控制if
if [ $a -gt 10 ];then
代码1
elif [ $a -lt 10 ];then
代码2
else
代码3
fi
关系运算符
运算符说明英文举例
-eq检测两个数是否相等,相等返回 true。equal[ $a -eq $b ] 返回 false。-ne检测两个数是否不相等,不相等返回 true。not equal[ $a -ne $b ] 返回 true。-gt检测左边的数是否大于右边的,如果是,则返回 true。greater than[ $a -gt $b ] 返回 false。-lt检测左边的数是否小于右边的,如果是,则返回 true。less than[ $a -lt $b ] 返回 true。-ge检测左边的数是否大于等于右边的,如果是,则返回 true。Greater than or equal to[ $a -ge $b ] 返回 false。-le检测左边的数是否小于等于右边的,如果是,则返回 true。Less than or equal to[ $a -le $b ] 返回 true。
循环
For 循环
for aa in XXXX
do
循环体
done
While循环
while 条件 ;
do
循环体
done
跳出循环
跳出所有循环 break
跳出当前循环,进入下一次循环 continue
case ()
case 值 in
结果1)
结果1对应的操作;;
结果2)
结果2对应的操作;;
结果3)
结果3对应的操作;;
esac
接收控制台数据
read 变量名
函数的使用
函数声明: [function] 函数名(){
函数体
$参数1
$参数2
$参数3
}
函数调用
函数名 参数1 参数2 参数3
数组
数组声明: 数组名称=(元素1 元素2 元素3 元素4)
数组的使用
单个使用 echo 数组名[角标] 【角标从0开始】
遍历数组
for var in ${my_arr[*]}
do
echo $var
done
文件加载
在文件中添加 . 脚本名称 或者 source 脚本名称
#!/bin/bash
source ./test1.sh # 加载test1.sh 的文件内容