Shell 運算子與流程控制
阿新 • • 發佈:2021-02-04
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"