Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)
三种shell各有优缺点。Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux操作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。
总的来说相当于windows下的bat执行语句。
shell语句的特点
1.文件必须以sh结尾;
2.文件默认产生出来的没有可执行权限,可通过chmod来修改权限;
3.vi分为指令模式和输入模式
a从光标所在位置之后面开始心中内容
A从光标在列的第一个非空字节签名开始插入内容
在指令模式下::q没有修改退出 q!放弃保存退出 wq、x保存退出
/关键字 查找
例子1判断分数
流程
1.在当前文件夹下新建一个shell文件vi score.sh,然后进入vi编辑模式
输入代码
echo "iput s:"
read s
echo "iput is $s"
if [ $s -ge 80 ] ; then
echo good
elif [ $s -ge 60 ] ; then
echo pass
else
echo fail
fi
按ESC,进入命令编辑模式,再按一下shift,再按一下shift+z就快速保存退出
2.在默认条件下,执行shell文件会出现permission denied报错,一般是没有可执行权限。用chmod修改权限
chomd 777 score.sh //把所有权限给aa文件 777代表所有权限
3.接着使用 ./score.sh就可以执行shell了
案例2,:一个小型超市查询系统
实现功能:1.使用账户名adimin 密码123 登陆系统 2.选择要使用的服务,包括查询所以产品、查询单个产品信息、退出。
echo "welcome to supermarket system , please choose: ?"
select var in "Login" "Exit" ; do
break
done
flag=0
while [ $flag -eq 0 ]
do
if [ $var = "Login" ]; then
echo "Please input your name:"
read name
echo "please input your password"
read pass
if [ $name = "admin" -a $pass = "123" ];then
flag=1
echo "Please choose your option:"
select var in "view all products" "view information about a product" "Exit"; do
break
done
if [ $var = "view information about a product" ];then
echo "Please input the product name:"
read fname
if [ $fname = "fish" ];then
echo "fish price 10.0 amount 100kg"
elif [ $fname = "pork" ];then
echo "pork price 8.0 amount 120kg"
elif [ $fname = "tomato" ];then
echo "tomato price 3.0 amount 100kg"
else
echo "no such things"
fi
fi
fi
fi
done
以上代码错误没查出来,个人觉得逻辑应该没错。