1. 程式人生 > >shell編程之字符串比較和for循環

shell編程之字符串比較和for循環

shell編程 登錄shell etc 編程 否則 整數 循環 字符串比較 之間

一、字符串比較

    字符串比較使用:= ,==,!=,\>,\<
    如:A=‘hello’,B=‘hi’
    判斷A和B的值是否相等:[  $A  =  $B   ]或者 [  $A  ==  $B   ] 如果相等則返回真
    判斷A和B的值是否不等:[  $A  !=  $B   ] 如果不相等則返回真
    需要註意的是:條件判斷符兩邊要用空格隔開,否則會報錯
    另外 \>  , \< 用來判斷兩個字符串大小比較,是通過ASCII來比較,要使用 \ 轉義:如 ‘a’ \< ‘b‘ ,‘ab’ \> ‘aa‘
    字符串是否為空判斷:
    如:- n string 判斷字符串string是否為空,不為空返回真,-z string 判斷字符串是否為空,為空返回真。

二、for循環

用法: 
        for  變量名  in  列表
        do
                循環體
        done

三、腳本練習
1.要求:打印出用戶的登錄shell為/bin/bash的用戶名。
#!/bin/bash
for i in cat /etc/passwd # cat /etc/passwd取出/etc/passwd中的每一行,並作為列表,把列表中的每一行循環賦值給i
do
username=echo $i | cut -d: -f1 #取出每行的用戶名
sh=echo $i | cut -d: -f7 #取出每行的shell環境
if [[ $sh == ‘/bin/bash‘ ]];then #判斷是否為/bin/bash

echo "$username"
fi
done
2.求1到100之間的和
#!/bin/bash
declare -i SUM=0 #declare -i 聲明SUM變量為整數,賦值為0,也可以直接是SUM=0

#{1..100}表示生成1到100的數值列表,也可以使用seq 1 1 100生成1到100的列表,第一個1表示從1開始,第二個1表示步長為1,100是結束數字,步長可以省略,默認為1
for i in {1..100}
do
    SUM=$((  $SUM+$i ))
done
echo $SUM

shell編程之字符串比較和for循環