歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> bash腳本之for語句if語句以及各種測試語句

bash腳本之for語句if語句以及各種測試語句

日期:2017/3/1 9:54:40   编辑:Linux編程

bash腳本編程:

面向過程:

順序執行

選擇執行: if, case

循環執行: for, while, until

For循環

for 變量 in 列表; do

語句1;

語句2;

...

done

循環必須有退出條件;

單分支if語句:

if 條件; then

語句1

語句2

...

fi

單分支if語句例子

1:寫一個腳本,實現如下功能:如果用戶存在,就說明其存在;

#!/bin/bash

#

UserName=user1

if grep "^$UserName\>" /etc/passwd &> /dev/null; then

echo "$UserName exists."

fi

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

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

#!/bin/bash

UserName=user1

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

echo "$UserName exists."

fi

2:寫一個腳本,實現如下功能:如果用存在,就顯示其UID和SHELL;

#!/bin/bash

#

UserName=user1

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

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

fi

3:寫一個腳本,實現如下功能:如果設備/dev/sda3已經掛載,就顯示其掛載點;

#!/bin/bash

#

Device='/dev/sda3'

if mount | grep "^$Device" &> /dev/null; then

mount | grep "/dev/sda3" | cut -d' ' -f3

fi

4:寫一個腳本,實現如下功能:如果/etc/rc.d/rc.sysinit中有空白行,就顯示其空白行數;

#!/bin/bash

#

File='/etc/rc.d/rc.sysinit'

if grep "^$" $File &> /dev/null; then

grep "^$" $File | wc -l

fi

雙分支if語句:

if 條件; then

語句1

語句2

...

else

語句1

語句2

...

fi

練習:寫一個腳本,實現如下功能:如果設備/dev/sda3已經掛載,就顯示其掛載點;否則,就說明其未掛載或設備不存在;

#!/bin/bash

#

Device='/dev/sda3'

if mount | grep "^$Device" &> /dev/null; then

mount | grep "/dev/sda3" | cut -d' ' -f3

else

echo "$Device not mounted or not exist."

fi

多分支if語句:

語法格式:

if 條件1; then

語句1

語句2

...

elif 條件2; then

語句1

語句2

...

elif 條件3; then

語句1

語句2

...

else

語句1

語句2

...

fi

寫一個腳本:

判斷當前主機的CPU生產商,其信息在/proc/cpuinfo文件中vendor id一行中。

如果其生產商為GenuineIntel,就顯示其為Intel公司;

如果其生產商為AuthenticAMD,就顯示其為AMD公司;

否則,就顯示無法識別;

#!/bin/bash

#

Vendor=`grep "vendor_id" /proc/cpuinfo | uniq | cut -d: -f2`

if [[ $Vendor =~ [[:space:]]*GenuineIntel$ ]]; then

echo "intel"

elif [[ $Vendor =~ [[:space:]]*AuthenticAMD$ ]]; then

echo "AMD"

else

echo "Unknown"

fi

bash條件測試:

可獨立執行的命令不需使用如下測試的方式;

[ expression ] 括號內一般是需要測試的表達式 如:"$a" == "$b"

[[ expression ]]

test expression

bash命令有執行狀態返回值;

bash的變量類型:

本地變量

局部變量

環境變量

位置變量

特殊變量:

$?: 用於保存剛剛執行的命令的狀態返回值;

0:成功執行;

1-255:失敗,1,2,127

可以使用exit命令在腳本中自定義腳本執行狀態返回值;如果不定義,腳本執行狀態返回值取決於腳本執行結束前最後執行的那個語句的狀態;

$@, $*: 所有位置參數;

$#: 位置參數的個數;

bash整數測試:

expression: ��值1 比較符號 數值2

$A 比較符號 $B

大於:-gt

小於:-lt

等於:-eq

大等:-ge

小等:-le

不等:-ne

命令執行狀態返回值: 0-255

0: 正確執行

1-255: 錯誤執行

exit [n] 腳本執行的最後一條件命令的狀態返回值;

1:寫一個腳本,生成兩個隨機數,比較其大小;顯示大數;

bash有個內置變量:$RANDOM

$RANDOM 顯示隨機數

#!/bin/bash

#

A=$RANDOM

B=$RANDOM

if [ $A -ge $B ]; then

echo "Max number is $A."

else

echo "Max number is $B."

fi

2:寫一腳本,隨機生成一個整數,判定,顯示其奇偶性;

#!/bin/bash

#

A=$RANDOM

if [ $[$A%2] -eq 0 ]; then

echo "$A: Even"

else

echo "$A: Odd"

fi

3:給定一個用戶,如果其ID號大於499,就說明其是普通用戶,否則,就說明其是管理員或系統用戶;

#!/bin/bash

#

UserName=daemon

Uid=`id -u $UserName`

if [ $Uid -gt 499 ]; then

echo "A common user: $UserName."

else

echo "admin user or system user: $UserName."

fi

4:求200以內所有為3的整數倍的整數之和;

#!/bin/bash

#

Sum=0

for I in {1..200}; do

if [ $[$I%3] -eq 0 ]; then

Sum=$[$Sum+$I]

fi

done

echo "Sum: $Sum."

5:給定一個用戶,如果其UID等於GID,就說明這是個“good guy”,否則,“Bad guy.”

#!/bin/bash

#

UserName=user1

if [ `id -u $UserName` -eq `id -g $UserName` ]; then

echo "Good Guy."

else

echo "Bad Guy."

fi

6:寫一個腳本:計算100以內所有奇數的和以及所有偶數的和;分別顯示之;

#!/bin/bash

#

EvenSum=0

OddSum=0

for I in {1..100}; do

if [ $[$I%2] -eq 0 ]; then

EvenSum=$[$EvenSum+$I]

else

OddSum=$[$OddSum+$I]

fi

done

echo "EvenSum is: $EvenSum. OddSum is: $OddSum."

更多見下一頁: http://www.linuxidc.com/Linux/2013-07/87922p2.htm

Copyright © Linux教程網 All Rights Reserved