1. 程式人生 > 其它 >Shell 運算子與流程控制

Shell 運算子與流程控制

技術標籤:LinuxShell

1.運算子

$((a+b)) :

$[a+b] : 建議使用

expr a + b :

expr 的 乘以* 需要轉義 為\*

運算子之間需要有空格,整體使用``(反引號)包起來

2.1 if判斷與常用判斷條件

[ 判斷式 ] : 注意判斷式倆端需要有空格

if 判斷 :

if [ 條件判斷式 ] 
then
    程式

elif [ 條件判斷式 ]   #對比java中的else if 
then
    程式
else
    程式
fi    #以反if結尾

=:字串比較

對於倆個整數:

-lt : 小於

-le : 小於等於

-eq : 等於

-gt : 大於

-ge : 大於等於

-ne : 不等於

#!/bin/bash

if [ $1 -lt $2 ]
then
        echo "$1小於$2"
fi

if [ $1 -le $2 ]
then
        echo "$1小於等於$2"
fi


if [ $1 -eq $2 ]
then
        echo "$1等於$2"
fi


if [ $1 -gt $2 ]
then
        echo "$1大於$2"
fi

if [ $1 -ge $2 ]
then
        echo "$1大於等於$2"
fi

if [ $1 -ne $2 ]
then
        echo "$1不等於$2"
fi

按照檔案許可權進行判斷

-r有讀的許可權

-w有寫的許可權

-x有執行的許可權

#!/bin/bash

if [ -r /home/acofkings/shell/hello2.sh  ]
then
        echo "擁有讀的許可權"
fi


if [ -w /home/acofkings/shell/hello2.sh  ]
then 
        echo "擁有寫的許可權"
fi


if [ -x /home/acofkings/shell/hello2.sh  ]
then 
        echo "擁有執行的許可權"
fi

按照檔案型別進行判斷

-f檔案存在並且是一個常規的檔案

-e檔案存在

-d檔案存在並是一個目錄

#!/bin/bash

if [ -f $1  ]
then
        echo "檔案存在且是常規檔案"
fi


if [ -e $1  ]
then
        echo "檔案存在"
fi


if [ -d $1  ]
then
        echo "檔案存在且是一個目錄"
fi

3.case判斷

case $變數名 in
"值1")
    如果變數的值等於值 1,則執行程式 1
;;
"值 2")
    如果變數的值等於值 2,則執行程式 2
;;
…省略其他分支…
*)
如果變數的值都不是以上的值,則執行此程式
;;
esac

例:

#!/bin/bash
case $1 in
"1")
        echo "1"
;;
"2")
        echo "2"
;;
*)
        echo "other"
;;
esac

4.for迴圈

倆個格式

格式一:

for 變 量 in 值 1 值 2 值 3…
do
    程式
done

例:

#!/bin/bash

for i in "$*"
do
        echo "$i"
done

for j in "[email protected]"
do
        echo "$j" 
done

$* 中引數作為一個整體輸出

[email protected]中引數一個個輸出

格式二:

for (( 初始值;迴圈控制條件;變數變化 ))
do
    程式
done

例:

#!/bin/bash

SUM=0
for ((i=0;i<=100;i++))
do
        SUM=$[$SUM+$i]
done
echo "SUM=$SUM"

5.while迴圈

while [ 條件判斷式 ]
do
程式
done
#!/bin/bash

#從命令列輸入一個數 n,統計從 1+..+ n  的值是多少?

SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "SUM=$SUM"