腳本

1.for循環

 

for循環用於值列表中的相同命令的重複


 

#!/bin/bash

while [ -z "$*" ]

do

    echo "please give a num"

    exit 0

done

 

for ((i=0;i<$1;i++))

do

     ((j=j+i))

done

echo $j

 

測試

 wKiom1lLShaTRWdnAAA0KTuxxVM250.png-wh_50

 

 

 

2.bash位置參數

 

有兩種簡單的方法可以將用戶輸入讀入bash中的變量。第一個方法是使用read提示用

戶輸入(使用-p選項)並將其直接存儲到一個或多個變量:

交互式輸入

# read -p 'Enter your first and last name: ' FIRST LAST

另一個方法是使用位置參數來讀取傳遞給腳本的命令行參數或選項輸入。各種特殊

變量存儲傳遞的選項編號

Bash解析的個別參數或整個原始命令行。

指定的位置參數總數:$#

位置參數自身:$0、$1、$2、$3....

所有位置參數: $@$*


 

#!/bin/bash

echo $*

echo $0

echo $1

echo $2

echo $3

echo $#

 

測試:

 wKioL1lLSifih5iUAAAv-knVmt4311.png-wh_50

 

 

3.退出狀態

Linux命令完成時,將返回退出狀態。成功完成程序時,將返回0的推出狀態。這被bash

當作邏輯True值。非零退出狀態通常表示發生了錯誤,並且被bash當作邏輯False值。

例如:grep的退出狀態的含義:

0 – 在指定的文件中找到了模式

1 – 在指定的文件中未找到模式

>1 – 一些其他錯誤(無法打開文件、錯誤的搜索表達式等)

推出狀態的值被存儲在"?"中,可以使用以下命令查看:

# echo $?

 

#!/bin/bash

while [ -z "$*" ]

do

    echo "please give a num"

    exit 0

done

 

for ((i=0;i<$1;i++))

do

     ((j=j+i))

done

echo $j

echo $?

 

測試:

 wKioL1lLSjvBxL21AAAgEo9OpEk490.png-wh_50

 

 

4.test條件判斷

 

test命令可用於評估bash腳本中的表達式。它評估其參數所指定的表達式,如果表達式

true,返回零退出狀態,如果表達式爲false,則返回非零退出狀態。test具有替代語

,使用方括號"[]"將表達式括起來,這樣更易於閱讀


 

#!/bin/bash

while [ -z "$*" ]

do

     echo "please give a varchar"

     exit 0

done

 

[ -f "$1" ]&&echo "$1 is a file"

[ -d "$1" ]&&echo "$1 is a direction"

[ -b "$1" ]&&echo "$1 is a 設備"

[ -x "$1" ]&&echo "$1 is a 可執行文件"

[ -c "$1" ]&&echo "$1 is a char"

echo $?

 

 

測試:

wKiom1lLSkzwyVUIAAD5KX8g1gg183.png-wh_50 

 

5.if語句

if命令檢查if後面的命令或列表的退出值。如果第一個命令評估爲true/零,則運行then

之後的命令列表,直至任一else。如果第一個命令評估爲false/非零,則運行else與fi之

間的命令列表(反向平寫if,標記if塊的結束)。

語法:if command; then command; command2; else command3; fi

 

水仙花數(i只能給大於99,小於1000的數)

#!/bin/bash

while [ -z "$1" ]

do

echo "please give me a num"

exit 0

done

 

for ((i=100;i<$1;i++))

do

    let x=$i/100

    m=`echo ${x%.*}`

    let y=($i-m*100)/10

    n=`echo ${y%.*}`

    let z=$i-m*100-n*10

    o=z

    num1=$((m*100+n*10+o))

    num2=$((m*m*m+n*n*n+o*o*o))

    if [ $num1 -eq $num2 ];then

        echo "水仙花數$num1"

    fi

done

 

 

測試

wKioL1lLSmOwyl3hAABfWLJbUoU581.png-wh_50 

 

 

6.case語句

case語句 :它能夠把變量的內容與多個模板進行匹配,再根據成功匹配的模板去決定應該執行哪

 

 

 

#!/bin/bash

case $1 in

     start | begin)

     echo "start something"

         ;;

     stop | end)

     echo "stop something"

         ;;

     reload | restart)

     echo "restart or reload something"

         ;;

     *)

     echo "you no give me a command"                                           esac

 

 

測試

 wKioL1lLSnGiR_28AAC0gXClKDs533.png-wh_50

7.expect

shell中利用expect實現自動應答腳本


 wKiom1lLSoeidx4YAABcOfFDAnA980.png-wh_50


wKioL1lLSqvjHeGDAABIJNhYVGQ576.png-wh_50

wKioL1lLStDidlOvAACpwEN3FMU618.png-wh_50

wKiom1lLSt2h__bTAABf-ZseMaM832.png-wh_50 

 

 


8.函數

 

 

#!/bin/bash

ACTION  ()  {

if

[ -z "$3" ]

then

echo "please give me a userfile"

elif

[ ! -e "$3" ]

then

echo "$3 is not exist!!"

else

[ $1 "$3" ]&&echo "$2"

fi

}

ACTION -f 'this is a file' $1

ACTION -d 'this is a direction' $1

ACTION -b 'this is a 設備' $1

ACTION -c 'this is a char' $1

wKiom1lLSymy1gdrAACb9-3THBc382.png-wh_50

9.環境變量


shell和腳本使用變量來存儲數據 ,有些變量可以連同它們的內容傳遞給子進程,這些

變量我們稱之爲環境變量

wKioL1lLS2eBvYFUAAB__Epo7iI534.png-wh_50

wKiom1lLS3OiWLaQAACP2bV0LkI827.png-wh_50

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章