对于Shell书写和概念上一篇已经有所介绍,那么本篇继续学习Shell编程一些语法知识;
首先介绍Shell中的流程控制,例如判断语句等等…
if语句:
首先了解几个知识:
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
示例代码:
- #!/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
务必注意,[]比较的时候其括号前后的空格别忘了! = 等号前后也要有空格也要注意;
&& 和 || 操作符:
示例代码:
- #!/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混淆)。
示例代码:
- #!/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的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:
- select var in ... ; do
- break;
- done
- .... now $var can be used ....
- #!/bin/sh
- echo "What is your favourite OS?"
- select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
- break;
- done
- echo "You have selected $var"
- What is your favourite OS?
- 1) Linux
- 2) Gnu Hurd
- 3) Free BSD
- 4) Other
- #? 1
- You have selected Linux
while/for 循环:
示例代码:
- #!/bin/sh
- varOne=1
- varTwo=1
- # while
- while [ "$varOne" = "$varOne" ]; do
- echo "while Done"
- break
- done
- # for
- for varStr in H I M I ; do
- echo "varStr is $varStr"
- done
- while Done
- varStr is H
- varStr is I
- varStr is M
- varStr is I
- localhost:Desktop Himi$
select 语句:
须知:select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:
示例代码:
- #!/bin/sh
- echo "What is your favourite?"
- select var in "iOS" "Android" "Himi" "Other"; do
- break;
- done
- echo "You have selected $var"
- What is your favourite?
- 1) iOS
- 2) Android
- 3) Himi
- 4) Other
- #? 3
- You have selected Himi
- localhost:Desktop Himi$
函数:
如果你写过比较复杂的脚本,就会发现可能在几个地方使用了相同的代码,这时如果用上函数,会方便很多。函数的大致样子如下:
- functionname()
- {
- # inside the body $1 is the first argument given to the function
- # $2 the second ...
- body
- }
- #!/bin/sh
- himi()
- {
- echo "Function is ok"
- exit 0
- }
- himi
脚本调试:
最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。shell也有一个真正的调试模式,如果脚本”strangescript”出错,可以使用如下命令进行调试:
sh -x strangescript
上述命令会执行该脚本,同时显示所有变量的值。shell还有一个不执行脚本只检查语法的模式,命令如下:
sh -n your_script
OK,本章主要是为了熟悉一些控制语句和常用知识点,那么到这对于Shell编程基础学习认识就算告一段落,如有必要以后会继续深入学习;暂时足以;