一、什么是shell 脚本
我们已经能够熟练的在终端中输入命令来完成一些常用的操作,但是我们都是一条一条输入命令。这样会很麻烦,那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?肯定有,这个就是 shell 脚本!
shell 脚本类似windows 的批处理文件shell 脚本就是将连续执行的命令写成一个文件。
shell 脚本提供数组循环条件判断的等功能。shell 脚本一般是Linux 运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握 shell 脚本最基础的部分即可。
二、shell 脚本写法
shell 脚本是个纯文本文件命令从上而下,一行一行的开始执行。shell 脚本扩展名为.sh。
shell 脚本第一行一定要为:
#!/bin/bash+
表示使用bash。“
echo就是在终端上显示一个字符串。
三、shell脚本语法
1、交互式shell脚本
通过read来实现。
read就是读,读取键盘输入,将读到的内容复制给name这个变量。
-p:用于给出提示符,在前面的例子中我们使用了“echo -n”来给出提示符,可以使用read -p
my promt? value的方式只需一个语句来表示。
2、shell脚本的数值计算
shell仅支持整形,数值计算使用$((表达式))。
3、test命令
test 命令用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。
&&和|命令:
cmd1 && cmd2当cmd1 执行完毕并且正确,那么cmd2 开始执行,如果cmd1执行完毕错
误,那么cmd2不执行。
cmd1 ll cmd2当cmd1 执行完毕并正确,那么cmd2 不执行,反之cmd2执行。
查看某一个文件是否存在,格式:
-e 文件名 如果文件存在则为真
查看两个字符串是否相等:
4、中括号[ ]判断符
中括号中只能输入“==”或者“!=”,中括号里面的字符串一定要加上双引号,且括号之间要有一个空格
若不加上双引号:
5、默认变量
shell脚本可以输入参数 。
$0-$n,表示 shell 脚本的参数,包括shell 脚本命令本身,shlle 脚本命令本身为$0
$#: #表示最后一个参的标号n。如 $0-$4,那么#就是4。
$@: 表$1、$2、$3......
四、shell脚本条件判断
shell 脚本支持条件判断,虽然可以通过&&和来实现简单的条件判断,但是稍微复杂一
点的场景就不适合了。shell 脚本提供了if then 条件判断语句,写法
if 条件判断 : then
//判断成立要做的事情
fi
exit 0 表示退出
还有 if then else 语句,写法
if 条件判断 : then
//条件判断成立要做的事情+
else
//条件判断不成立要做的事情。
或:
if 条件判断 : then
/ /条件判断成立要做的事情“
elif [条件判断] : then
//条件判断成立要做的事情“
else
//条件判断不成立要做的事情。“
fi
还有case语句:
case $ 变量 in
“第1个变量内容”)
程序段
;; //两个分号表示该程序块结束!!
“第2个变量内容”)
程序段
;;
“第n个变量内容)
程序段
::
esac 最后将case这个单词反过来写
通配符*不用加双引号“”
五、shell脚本函数
shell 脚本也支持函数,函数写法如下:
function fname (){
//函数代码段
}
fname是所定义的函数名
函数传参:函数名 参数1 参数2
六、shell循环
shell 脚本也支持循环,比如 while do done,表示当条件成立的时候就一直循环,直到
条件不成立。
while [条件] //括号内的状态是判断式
do //循环开始·
//循环代码段
done
还有另外一种until do done,表示条件不成立的时候循环,条件成立以后就不循环了,写法
如下:
until [条件]
do
//循环代码段
done
for 循环,使用for 循环可以知道有循环次数,写法
for var in con1 con2 con3·......
do
//循环代码段
done
for 循环数值处理写法
for((初始值;限制值; 执行步长))
do
//循环代码段
done