Shell里的流程控制函数及脚本调试,shell流程示例代码:12345


介绍Shell中的流程控制,例如判断语句等等…

if语句:

首先了解几个知识:

[ -f "somefile" ] :判断是否是一个文件

[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限

[ -n "$var" ] :判断$var变量是否有值

[ "$a" = "$b" ] :判断$a和$b是否相等

示例代码:

1

2

3

4

5

6

7

8

9

10

11

#!/bin/sh

varOne=1

varTwo=2

varThree=3

if["$varOne"="$varTwo"];then

echo"varTwo:$varTwo"

elif["$varOne"="$varThree"];then

echo"varThree:$varThree"

else

echo"varOne:$varOne"

fi

务必注意,[]比较的时候其括号前后的空格别忘了! = 等号前后也要有空格也要注意;

&& 和 || 操作符:

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#!/bin/sh

varOne=1

varTwo=2

varThree=3

if["$varOne"="$varThree"] || ["$varOne"="$varTwo"];then

echo"|| 进入"

else

echo"No || 进入"

fi

if["$varOne"="$varOne"] && ["$varOne"="$varTwo"];then

echo"&& 进入"

else

echo"No && 进入"

fi

case 语句:

须知:

case表达式可以用来匹配一个给定的字符串,而不是数字(可别和C语言里的switch…case混淆)。

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

#!/bin/sh

ftype=`file"$1"`# Note ' and ` is different

case"$ftype"in

"$1: Zip archive"*)

unzip"$1";;

"$1: gzip compressed"*)

gunzip"$1";;

"$1: bzip2 compressed"*)

bunzip2"$1";;

*)echo"File $1 can not be uncompressed with smartzip";;

esac

特殊变量$1,该变量包含有传递给该脚本的第一个参数值,也就是说,$1 就是字符串 articles.zip。

select 语句:

select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:

1

2

3

4

selectvarin... ;do

break;

done

.... now $var can be used ....

示例代码:

1

2

3

4

5

6

7

#!/bin/sh

echo"What is your favourite OS?"

selectvarin"Linux""Gnu Hurd""Free BSD""Other";do

break;

done

echo"You have selected $var"

如果 以上脚本运行出现 select :NOT FOUND 将 #!/bin/sh 改为 #!/bin/bash 该脚本的运行结果如下:

1

2

3

4

5

6

7

What is your favourite OS?

1) Linux

2) Gnu Hurd

3) Free BSD

4) Other

#? 1

You have selected Linux

while/for 循环:

示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/bin/sh

varOne=1

varTwo=1

# while

while["$varOne"="$varOne"];do

echo"while Done"

break

done

# for

forvarStrinH I M I ;do

echo"varStr is $varStr"

done

输出:

1

2

3

4

5

6

whileDone

varStr is H

varStr is I

varStr is M

varStr is I

localhost:Desktop Himi$

select 语句:

须知:select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:

示例代码:

1

2

3

4

5

6

#!/bin/sh

echo"What is your favourite?"

selectvarin"iOS""Android""Himi""Other";do

break;

done

echo"You have selected $var"

执行脚本后,等待用户输入,然后在终端输入你的选择,回车,如下显示:

1

2

3

4

5

6

7

8

What is your favourite?

1) iOS

2) Android

3) Himi

4) Other

#? 3

You have selected Himi

localhost:Desktop Himi$

函数:

如果你写过比较复杂的脚本,就会发现可能在几个地方使用了相同的代码,这时如果用上函数,会方便很多。函数的大致样子如下:

1

2

3

4

5

6

functionname()

{

# inside the body $1 is the first argument given to the function

# $2 the second ...

body

}

示例代码:

1

2

3

4

5

6

7

#!/bin/sh

himi()

{

echo"Function is ok"

exit0

}

himi

脚本调试:

最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。shell也有一个真正的调试模式,如果脚本”strangescript”出错,可以使用如下命令进行调试:

sh -x strangescript

上述命令会执行该脚本,同时显示所有变量的值。shell还有一个不执行脚本只检查语法的模式,命令如下:

sh -n your_script

OK,本章主要是为了熟悉一些控制语句和常用知识点,那么到这对于Shell编程基础学习认识就算告一段落,如有必要以后会继续深入学习;暂时足以;

相关内容

    暂无相关文章