鳥哥的Linux私房菜——第十六章:學習Shell Scripts

來源:互聯網
上載者:User

標籤:bsp   cal   進階   ase   dog   為什麼   pts   shel   i++   

 

  視頻連結:

 

1. 什麼是 Shell Script            (shell寫的指令碼)
1.1 幹嘛學習 shell scripts?      ()
1.2 第一支 script 的撰寫與執行
1.3 撰寫 shell script 的良好習慣建立  
2. 簡單的 shell script 練習:      (read -p  date)
3. 善用判斷式:
3.1 利用 test 指令的測試功能
3.2 利用判斷符號 [ ]          
3.3 Shell script 的預設變數($0, $1...)
4. 條件判斷式:
4.1 利用 if .... then
4.2 利用 case ..... esac 判斷
4.3 利用 function 功能
5. 迴圈 (loop)
5.1 while....do....done, until....do....done
5.2 for...do...done
6. shell script 的追蹤與 debug

 

 

 

第一個shell scripts的撰寫,我們寫入一個test.sh的文檔內

#!/bin/bash
PAth=自己echo $PATH一下
ecport PATHecho -e "Hello shuyunquan \n"exit 0

然後這樣執行  

bash test.sh

 

接下來來一個進階的scripts吧,我們加入一個read

 

test命令 其實就是判斷的用途,我列出常用的參數,然後再舉個例子

 

 

 

 

[] 命令,也是判斷用的,有趣的是,test命令的參數[]都能用

[]需要注意的幾點

我們來練習一道例題

1. 當執行一個程式的時候,這個程式會讓使用者選擇 Y 或 N ,
2. 如果使用者輸入 Y 或 y 時,就顯示『 OK, continue 』
3. 如果使用者輸入 n 或 N 時,就顯示『 Oh, interrupt !』
4. 如果不是 Y/y/N/n 之內的其它字元,就顯示『I don‘t know what is your choise』

 

#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesexport PATHread -p "請輸入(Y/N):"  yn[ "$yn" == "Y" -o "$yn" == "y" ] && echo "ok,continue" && exit 0[ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,intsdsd" && exit 0echo "我不信這個也能出來" && exit 0

 

shell scripts的預設變數($0 $1 $2)

這個理解起來很簡單,指令碼名稱就是$0   然後第一個參數就是$1 第二個參數就是$2 ...以此類推

好,我們來個簡單的例子

#!/bin/bashecho "The scripts name is $0"[ -n "$1" ] && echo "第一個參數是: $1" || exit 0[ -n "$2" ] && echo "第二個參數是: $2" || exit 0

 

if...then 

if [ ] ; then

  ......

elif [ ] ; then

  .......

else

  ........ 

fi

exit 0

#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesexport PATHread -p "請輸入(Y/N):"  ynif [ "$yn" == "Y" -o "$yn" == "y" ];then         echo "ok,continue"elif [ "$yn" == "N" -o "$yn" == "n" ];then        echo "oh,intsdsd" else        echo "我不信這個也能出來" fiexit 0       

 

case ... in ... esac

#!/bin/bashcase $1 in        "hello")                echo "hello,how are you"                ;;        "")                echo "你必須輸入參數"                ;;        *)                echo "要輸入hello啊"                ;;esac

 

function 函數  

#!/bin/bashfunction h(){   echo "蜀雲泉好帥啊 $1"    //function函數也有變數,$1就是函數的參數,這個和指令碼的變數不同}case $1 in        "one")                h 1                ;;        "two")                h 2                ;;        "three")                h 3                ;;        *)                echo "只能用123"                ;;esac

 

迴圈loop

 

 

while do done   注意,while裡面的判斷式!  符合while條件的才進去迴圈

#!/bin/bashread -p "請輸入一個數字:" numberi=0s=0while [ "$i" -lt  "$number" ]    //這裡的小於符號是 -lt 注意!doi=$(($i+1))              //這裡為什麼要兩個()?因為()有運算的意思s=$(($s+$i))doneecho -e "‘1+2+...+$number‘ 的結果是: $s "                             

大家可以試試echo (1+2)是不會出來3的,而echo ((1+2))才會出來3,所以()有一個整體運算的意思

 

untile do done  條件不符合的才進去

 

 

for...do...done 下面是第一種用法

#!/bin/bashs=0for((i=1;i<=100;i++))do        s=$(($s+$i))doneecho $s

for的第二種用法  animal會迴圈依次顯現三種內容

#!/bin/bashfor animal in dog cat elephantdo        echo "這次的動物是 $animal"done      

 

shell script的追蹤與debug

就是你寫的指令碼有沒有問題,bash內建參數就能檢查

 

鳥哥的Linux私房菜——第十六章:學習Shell Scripts

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.