歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

在Linux下初學shell命令及例子

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

以上代碼錯誤沒查出來,個人覺得邏輯應該沒錯。

Copyright © Linux教程網 All Rights Reserved