shell脚本规范
文件的拓展名必须是.sh
文件首行必须使用#! 指定script脚本的shell运行环境
我们的环境中有很多种运行环境,可以在/etc/shells看具体的环境
需要查看当前正在使用的shell环境也可以使用如下脚本,注意要大写
echo $SHELL
参数和命令之间多个空格会被认为是一个空格
tab键也认为是一个空格
空白行会被忽略
脚本执行的方式
第一种:
sh hello.sh
第二种
bash hello.sh
第三种 相对路径
./hello.sh
第四种 绝对路径
/root/hello.sh
第五种 环境变量
首先我们查看我们系统的环境变量有那些路径
echo $PATH
然后随意放在一个的bin目录下即可直接执行,比如放在/usr/local/bin目录下,然后在任意地方输入脚本名称即可执行
变量的命名规范
- 变量名只能使用英文字母、数字、下划线。首个字符不能以数字开头
- 中间不能有空格
- 不能使用标点符号
- 不能使用关键字
- 定义变量名称直接使用x=1这种形式
- 等于号左右不能有空格
- 执行结果赋值给变量时``
- 调用变量时必须加$ $a 或者${a}
变量a与变量A不是同一个变量,有大小写的区分
列出所有变量
set
删除变量
unset a
输入
read -t 秒 -p "请输入你的名字:" NAME
输出 echo $NAME
执行的时候也可以跟输入
比如 sh hello.sh job
然后在shell脚本中接收第一个参数:a=$1
计算
定义变量a
a=6
b=2
计算:echo $((a+b))
除法:echo $((a/b))
计算字符串的长度
首先一定要定义一个变量
a=nihao
然后取长度
echo ${#a}
数组
- 在bash中只有一位数组
- 数组下标从0开始
- 每个元素使用空格隔开
数组定义:a=(1 2 3)
也可以这样定义:a[0]=1 a[1]=2
取值:${a[0]} ${a[1]}
获取数组所有元素 ${a[*]}
获取数组长度 ${#a[@]}
if判断
a=5
if [ $a == 5 ]
then
echo 5
fi
注意 判断等式的两边一定要有一个空格,否则会报错 等号两边也一定要有空格,否则一直会执行第一个if里的语句
if多条件
a=5
if [ $a == 5 ]
then
echo 1
elif [ $a == 6 ]
then
echo 2
else
echo 3
fi
case判断
a=$1
case $a in
admin)
echo welcome
;;
other)
echo hello
;;
*)
echo hi
;;
esac
for循环
循环一百次
for n in {1..100}
do
echo $n
done
循环指定列表
for n in 1 2 3
do
echo $n
done
第二种for方式
a=0
for((i=0;i<=100;i++))
do
a=$((a+i))
done
while循环
index=0
sum=0
while [ $index -le 100 ]
do
sum=$((sum+index))
index=$((index+1))
done
echo $sum
这里注意 《=符号用的是-le 这里无法直接使用符号
第二种方式 这里就可以使用符号
index=0
sum=0
while (($index<=100))
do
sum=$((sum+index))
index=$((index+1))
done
echo $sum
function 函数
直接通过名字即可调用
function hello(){
echo hello
}
hello
检查脚本语法是否有错误,不执行脚本
bash -n hello.sh