文章目录
【1】什么是Shell?
shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。
【2】什么是脚本?
脚本就是由Shell命令组成的文件,这些命令都是可执行程序的名字,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。
【3】第一个shell脚本
打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 hello.sh,扩展名为 sh(sh代表shell)
#!/bin/bash
echo "Hello World !"
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
echo 命令用于向窗口输出文本
【4】运行脚本的两种方式
1.作为可执行程序
将上面的代码保存为 hello.sh,并 cd 到相应目录:
chmod 744 hello.sh 使脚本具有执行权限
./hello.sh 执行脚本
注意:一定要写成 ./hello.sh,而不是 hello.sh,运行其它二进制的程序也一样,直接写 hello.sh,linux 系统会去 PATH 里寻找有没有叫 hello.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 hello.sh 是会找不到命令的,要用 ./hello.sh 告诉系统说,就在当前目录找。
2.作为命令解释器
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/bash hello.sh
注意:这种方式运行的脚本,不需要在第一行指定解释器信息
【5】shell变量
定义变量时,变量名不加美元符号($),如:
your_name="jzf love zwl"
注意:变量名和等号之间不能有空格,同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
使用变量
- 使用一个定义过的变量,只要在变量名前面加美元符$即可
- 变量值可以用“”括起来也可以不用 但是如果值的中间有空格必须用“”括起来
- #是用来加注释 相当于C语言里的//
#!/bin/bash
str="hello world"
str1=hello
val=100
echo "str=$str"
echo "val=$val"
【6】Shell 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n, 其中n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
其他参数如下表所示
示例
#!/bin/bash
echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "第一个参数为:$2";
echo "第一个参数为:$3";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
【7】环境变量
#!/bin/bash
echo "HOME=$HOME"
echo "PATH=$PATH"
【8】条件语句 if else
语句结构如下
if
then
.....
elif
then
....
else
.....
fi
注意:
- read line语句为读取输入的数据 line名字可以自己取 使用时在前边加$符号
- if语句必须用[ ]括起来并且[ ]两边必须要有空格空开
- if语句的结束标志为fi
示例1
判断一个数是否大于100
#!/bin/bash
echo "input:"
read line
if [ "$line" -gt 100 ]
then
echo "$line>100"
else
echo "$line<=100"
fi
示例2
根据输入的成绩进行划分等级
#!/bin/bash
echo "input:"
read line
if [ "$line" -gt 100 ] || [ "$line" -lt 0 ]
then
echo "argc error"
exit 0
fi
if [ "$line" -ge "80" ]
then
echo "A"
elif [ "$line" -ge 70 ]
then
echo "B"
elif [ "$line" -ge 60 ]
then
echo "C"
else
echo "D"
fi
【9】循环语句 while
示例1
模拟密码验证过程
如果密码输入正确显示success
如果输入错误则继续输入,若连着三次都没有输入正确的密码,则退出程序显示failed。
#!/bin/bash
i=0
while [ : ]
do
echo "input"
read line
if [ "$line" = 123 ]
then
break
fi
let "i+=1"
if [ "$i" -eq 3 ]
then
printf "failed\n"
exit 0
fi
done
echo "success"
示例2
输出小于10的数
#!/bin/bash
i=0
while [ $i -lt 10 ]
do
echo "i=$i"
let "i+=1"
done
【10】算术运算符
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
注意:条件表达式要放在方括号之间,并且要有空格必须写成 [ $a == $b ]。
示例
#!/bin/bash
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi