腳本-shell



一、

1、Shell是什麼

   Shell是一個命令行的解釋器,隨內核一起啓動,用來解釋linux下的命令傳輸給計算機,是用戶使用Linux的橋樑。Shell既是一種命令語言,又是一種程序設計語言。作爲程序設計語言,定義了各種變量與參數,並提供了許多高階語言所具有的控制結構,包括循環與分支。

寫腳本不需要編譯,直接添加可執行X命令。

   Shell提供了操作系統與人之間的通訊方式,可以是交互方式(從鍵盤輸入,並且立即響應)【阻塞】,或以shell script(非交互)方式執行。


2、程序基礎:

第一步:#/bin/shbas

                #!告訴系統後面的參數用來執行該文件的程序

第二步:要使腳本可執行,修改權限

        chmod  +x  filname

第三步:通過輸入:./filename 來執行



3、變量:變量名=值  

   取出變量值可以加一個美元符號$在變量前面;

   變量賦值時,不加空格,無分號

例:#/bin/sh

      a=hello world

      echo A is :”

      echo  $a

②在編輯器輸入以上內容,然後保存文件HelloWorld之後執行

  chmod  +x  HelloWorld

③輸入 ./HelloWorld 執行該腳本

有時變量名很容易與其他名字混淆,需添加{}來告訴shell

例:echo  this  is  the  ${num}nd



4、默認變量

$#:傳入腳本的命令行參數個數;

$*:所有命令行參數值,各參數間留有空格;

$0:命令本身;

$1:第一個命令行參數;

$2:第二個命令行參數;

例:#  ./ s2  12  sf  bsn 77

       命令$0  參數$1 $2 $3 $4


5、局部變量與全局變量(看定義位置)


二、shell語句

1if語句

單分支:If [ expression ]

        then

            #code block

        fi

雙分支:If [ expression ]

        then

            #code block

        else

            #code block

        fi

多分支:If [ expression ]

        then

        else if [ expression ]

           then

               #code block

           else

               #code block

            fi

         fi

 

比較操作     整數操作    字符串操作

  相同         -eq          =

  不同         -ne          !=

  大於         -gt          >

  小於         -lt           <

大於或等於     -ge         

小於或等於     -le

  爲空         -z

 不爲空        -n

 

注意:在[”和“]”兩邊都留有空格;在“=”兩邊都有空格;

例:

#!/bin/bash

a=$1

b=$2

if [ -z $a ] || [ -z $b ]

then

    echo "please enter 2 no"

    exit 1

fi

if [ $a -eq $b ] ; then

    echo "number a = number b"

else if [ $a -gt $b ]

    then

        echo "number a>number b"

    elif [ $a -lt $b ]

        then

            echo "number a<number b"

    fi

fi

 

-e:文件已存在     -s:文件大小不爲0  -r:讀   -x:執行

-f:文件是普通類型 -d:文件是一個目錄 -w:寫

例:

#!/bin/sh

folder=/home

[ -r "$folder" ] && echo "Can read $folder"

[ -f "$folder" ] || echo "this is not file"

 

2For語句

基本結構:

for  var  in  [list]

do

  #code  block

done

 

Var:循環控制變量,[list]var需要遍歷的一個集合

do/done包含了循環體,相當於C語言中的大括號

do for 被寫在同一行,必須在do前面加“;”

如:for  var  in  [list]  ;  do

注意:in後面接幾個文件名,若沒有雙引號括起來,則一個一個輸出,若有雙引號,則一起輸出,當成一個字符串。

例:檢查當前目錄有幾個文件

#!/bin/bash

 

counter=0

for files in *

do

    counter=`expr $counter + 1`

done

echo "There are $counter files in `pwd` we need to process"

 

3while語句(當型循環)

while [ condition ]

do

  #code  block

Done

 

4untill語句

Untill  [ condition ]

do

  #code  block

done

whileuntill的區別在於while爲真時執行,untill爲假時執行。

一個命令執行成功,返回給系統0,失敗返回1,;!爲錯誤標號。

 

5case語句(開關語句)

case  $varin

condition1)

;;

condition2)

;;

*)

default  statements

esac

例:

#!/bin/bash

echo "Hit a key, then hit return."

read Keypress

case "$Keypress" in

[A-Z] ) echo "Uppercase letter";;

[a-z] ) echo "Lowercase letter";;

[0-9] ) echo "Digit";;

* ) echo "Punctuation, whitespace, or other";;

esac


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