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