在Linux下初学shell命令及例子(1)

来源:互联网 发布:java settimeout用法 编辑:程序博客网 时间:2024/04/28 04:43

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

以上代码错误没查出来,个人觉得逻辑应该没错。