bash簡單應用

bash快捷鍵:

Ctrl+a 跳轉至命令行首

Ctrl+u 刪除命令行首至當前光標所在處之前的所有內容

Ctrl+k 刪除當前光標所在處至命令行尾的所有內容

Ctrl+l 清屏

Ctrl+c 中止或取消

Ctrl+z 把當前命令送至後臺

======================================================================

bash編程語句格式:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

for、while、until、if

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

for 變量名 in 列表 ;do

循環體

done

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

while 測試條件;do

循環體

done

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

until 測試條件;do

循環體

done

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

if:三種格式

單分支:

if 測試條件;then

選擇分支

fi

雙分支:

if 條件1;then

分支1

else

分支2

fi

多分支:

if 條件1;then

分支1

elif 條件2;then

分支2

elif 條件3;then

分支3

...

else

分支n

fi

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

case 變量引用 in

PATTERN1)

分支1

;;

PATTERN2)

分支2

;;

*)

分支n

;;

esac

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

function F_NAME {

函數體

}

F_NAME(){

函數體

}

======================================================================

條件測試:

整型測試:數字之間的大小比較

-gt 大於

-lt 小於

-eq 等於

-ne 不等於

-ge 大於等於

-le 小於等於

字符串測試:字符串大小比較

> 大於

< 小於

== 等於

!= 不等於

=~

-n 不空爲真,爲空爲假

-z 爲空爲真,不空爲假

組合條件測試:在多個條件間實現邏輯運算

-a,&&

-o,||

-not,!

======================================================================

文件判斷:

-r 目標可讀爲真

-w 目標可寫爲真

-x 目標可執行爲真

-f 目標是文件爲真

-d 目標是目錄爲真

-c 目標爲字符文件爲真

-b 目標爲塊設備爲真

======================================================================

邏輯判斷:

-a and

-o or

!

======================================================================

實例:

1.新建10個用戶tuser401-tuser410,並求他們的ID之和;

#!/bin/bash

#

declare -i idsum=0

for i in {401..410}; do

   useradd tuser$i

   userID=`id -u tuser$i`

   let idsum+=$userID

done

echo "ID sum: $idsum."

2.求100以內所有正整數之和;

                until方式:

#!/bin/bash

#

declare -i count=1

declare -i sum=0

until [ $count -gt 100 ]; do

   let sum+=$count

   let count++

done

echo $sum


                while方式:

#!/bin/bash

#

declare -i count=1

declare -i sum=0

while [ $count -le 100 ]; do

   let sum+=$count

   let count++

done

echo $sum

3.提示用戶輸入一個用戶名,如果用戶存在,就顯示用戶的ID號和shell;否則顯示用戶不存在;

    顯示完成之後不退出,再次重複前面的操作,直到用戶輸入q或quit爲止;

                          #!/bin/bash

                          #

 read -p "Plz enter a username: " userName

 while [ "$userName" != 'q' -a "$userName" != 'quit' ]; do

   if id $userName &> /dev/null; then

       grep "^$userName\>" /etc/passwd | cut -d: -f3,7

   else

     echo "No such user."

   fi

   read -p "Plz enter a username again: " userName

 done


4.服務腳本示例

        #!/bin/bash

                #

# chkconfig: 2345 67 34

srvName=$(basename $0)

lockFile=/var/lock/subsys/$srvName


start() {

   if [ -f $lockFile ];then

echo "$srvName is already running."

return 1

   else

touch $lockFile

[ $? -eq 0 ] && echo "Starting $srvName OK."

return 0

    fi

}


stop() {

   if [ -f $lockFile ];then

rm -f $lockFile &> /dev/null

[ $? -eq 0 ] && echo "Stop $srvName OK" && return 0 

   else

echo "$srvName is not started."

return 1

   fi

}


status() {

   if [ -f $lockFile ]; then

echo "$srvName is running."

   else

echo "$srvName is stopped."

   fi

   return 0

}


usage() {

    echo "Usage: $srvName {start|stop|restart|status}"

    return 0

}


case $1 in

start)

start

;;

stop)

stop ;;

restart)

stop

start ;;

status)

status ;;

*)

usage

exit 1 ;;

esac


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