十九、Shell-Script(下)

king's blog
前面两个章节,我们了解了shell script的基本知识,那本节来了解下基本的判断语句等,主要内容如下:
一、If判断语句
二、Case开关语句
三、For循环语句
四、Function函数语句
五、Shift偏移

一、If判断语句

语句格式:

1
2
3
4
5
6
7
8
9
if [];then
    ...
elif [];then
    ...
elif [];then
    ...
else
    ...
fi

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#判断系统用户是否存在
weblogic@ETS157:/opt/project/test> cat if.sh
#!/bin/bash

result=$(grep $1 /etc/passwd)

if [  $result ]; then
        echo "exist $1 user"
else
        echo "non-exist $1 user"
fi
weblogic@ETS157:/opt/project/test> ./if.sh oracle
exist oracle user
weblogic@ETS157:/opt/project/test> ./if.sh abcde
non-exist abcde user

二、Case开关语句

语句格式:

1
2
3
4
5
6
7
8
9
10
11
case $变量名 in
    "第一个变量内容")
        ....
        ;;
    "第二个变量内容")
        ....
        ;;
    *)-------->相当于default value
        ....
        ;;
esac

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
weblogic@ETS157:/opt/project/test> cat case.sh
#!/bin/bash

case $1 in
"china")
    echo "input country name : china"
    ;;
"japan")
    echo "input country name : japan"
    ;;
"hongkong")
    echo "input country name : hongkong"
    ;;
*)
    echo "input other country name!"
    ;;
esac

weblogic@ETS157:/opt/project/test> ./case.sh hongkong
input country name : hongkong
weblogic@ETS157:/opt/project/test> ./case.sh brazil
input other country name!

三、For循环语句

表示循环的语句很多,比如while、until、for语句,格式分别如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#1.while语句
while []
do
    ....
done

#2.until语句
until []
do
    ...
done
   
#3.for语句-方式1
for 变量 in value1 value2 value3
do
       ...
done

#4.for语句-方式2
for ((i=0 ; i<10 ; i++))
do
       ...
done

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#1.while
weblogic@ETS157:/opt/project/test> cat while.sh
#!/bin/bash

i=1
while [ $i -le 5 ]
do
        echo $i
        i=$(($i+1))
done

weblogic@ETS157:/opt/project/test> ./while.sh
1
2
3
4
5

#2.until
weblogic@ETS157:/opt/project/test> cat until.sh
#!/bin/bash

i=1
until [ $i -gt 5 ]
do
        echo $i
        i=$(($i+1))
done

weblogic@ETS157:/opt/project/test> ./until.sh
1
2
3
4
5

#3.for(type1)
weblogic@ETS157:/opt/project/test> cat for-1.sh
#!/bin/bash

for i in 1 2 3
do
        echo $i
done
weblogic@ETS157:/opt/project/test> ./for-1.sh
1
2
3

#4.for(type2)
weblogic@ETS157:/opt/project/test> cat for-2.sh
#!/bin/bash

for ((i=1 ; i<5 ; i++))
do
        echo $i
done
weblogic@ETS157:/opt/project/test> ./for-2.sh
1
2
3

四、Function函数语句

语句格式:

1
2
3
4
5
function 名字(){ 
    ...
}

调用时按function调用即可
1
2
3
名字(){  
    ...
}

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
weblogic@ETS157:/opt/project/test> cat function.sh
#!/bin/bash

function output(){
        echo -n "the info is: "
}

read -p "input a letter:" letter

case $letter in
"a")
        output
        echo "a"
        ;;
"b")
        output
        echo "b"
        ;;
"c")
        output
        echo "c"
        ;;
*)
        output
        echo "other"
        ;;
esac
weblogic@ETS157:/opt/project/test> ./function.sh
input a letter:b
the info is: b

五、Shift偏移

如果想过滤掉几个传递的参数,比如传递了5个参数,想从第3个参数开始算,怎么做到呢?可用shift命令实现
请看下面的例子

1
2
3
4
5
6
7
8
9
10
11
12
weblogic@ETS157:/opt/project/test> cat shift.sh
#!/bin/bash

echo $@
shift 2--------->向右偏移2个参数

echo $@
echo $1
weblogic@ETS157:/opt/project/test> ./shift.sh 1 2 3 4 5 6
1 2 3 4 5 6
3 4 5 6
3
Tags:
文 / 甲乙丙丁
LEAVE A REPLY

loading