一、分支语句
1、语法结构 :
if 表达式
then 命令表
fi
如果表达式为真 , 则执行命令表中的命令 ; 否则退出 if 语句 , 即执行 fi 后面的语句。
if 和 fi 是条件语句的语句括号 , 必须成对使用 ;命令表中的命令可以是一条 , 也可以是若干条。
2、语法结构为 :
if 表达式
then 命令表 1
else 命令表 2
fi
如果表达式为真 , 则执行命令表 1 中的命令 , 再退出 if 语句 ; 否则执行命令表 2 中的语句 , 再退出 if 语句 .
注意 : 无论表达式是否为真 , 都有语句要执行 .
3、test 命令使用总结
二、多路分支语句
#!/bin/bash
#学生成绩分级管理
#80-100 A
#60-79 B
#0-59 C
read -p "input score: " val
#要求输入的范围是0-100
#-o 或
#-a 与
#-! 非
#-gt 小于等于
#-lt 大于等于
#if [ $val -gt 100 -o $val -lt 0 ]
if [ $val -gt 100 ] || [ $val -lt 0 ]
then
echo "input error val"
exit
fi
val=`expr $val / 10`
case $val in
8 | 9 | 10)
echo "A"
;;
6 | 7)
echo "B"
;;
*)
echo "C"
;; #;;只有最后一个模式可以省略,前面不可以
esac
三、循环语句
1、for 的用法
当循环次数已知或确定时,使用 for 循环语句来多次执行一条或一组命令。格式为 :
for 变量名 in 单词表
do
命令表
done
变量依次取单词表中的各个单词 , 每取一次单词 , 就执行一次循环体中的命令 . 循环次数由单词表中的单词数确定 . 命令表中的命令可以是一条 , 也可以是由分号或换行符分开的多条。
如果单词表是命令行上的所有位置参数时 , 可以在 for 语句中省略 “ in 单词
表” 部分。
#!/bin/bash
#$* 代表一个整体
#$@ 代表一个一个的
filename=`ls`
for file in $filename
do
if [ -f $file ]
then
echo "$file is a file"
else
echo "$file is not a file"
fi
done
#!/bin/bash
#for file in 1 2 3 4 5
for ((i = 0; i < 5; i = i+1))
do
echo "$i"
done
2、while用法
语法结构为:
while 命令或表达式
do
命令表
done
while 语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。
while 语句的退出状态为命令表中被执行的最后一条命令的退出状态。
3、break 和 continue
break n 则跳出 n 层 ;
continue 语句则马上转到最近一层循环语句的下一轮循环上 ,continue n 则转到最近 n 层循环语句的下一轮循环上 .
四、函数的定义
1、基本语法:
function name() {
statements
[return value]
}
function 是 Shell 中的关键字,专门用来定义函数;
name 是函数名;
statements 是函数要执行的代码,也就是一组语句;
return value 表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。
#!/bin/bash
function fun(){
echo "hello word"
return 0
}
fun
#$? 获取函数的返回值
echo $?
2、函数的调用
3、变量的作用域
全局作用域:在脚本的其他任何地方都能够访问该变量。
局部作用域:只能在声明变量的作用域内访问。
声明局部变量的格式:
Local variable_name =value