shell中的判断语句
if 语句
语法格式:
if [判断条件]
then
输出结果1
输出结果2
…
fi
判断符号[]
使用判断符号[]来进行数据的判断,只是中括号多用在条件判断语句if…then…fi中
判断符号[]中每个组件中间都要用空格来分隔,比如:
name="qweqwe"
[ "$name" == "qweqwe" ]
注意:
1、第一个方括号的左右两边分别有一个空格,第二个方括号左右两边也分别有一个空格,符号“==”与两边的组件之间也各有一个空格。
2、中括号[]内的变量最好用双引号来设置。
if else-if else 语法格式:
if [条件1]
then
输出结果1
elif [条件2]
then
输出结果2
else
其他输出结果
fi
条件判断(case…esac语句)
格式为:
case $变量名 in
"第一个变量内容")
程序段
;;
"第二个变量内容")
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
;;
esac
(1)case语句最后必须以esac为结尾。
(2)每一个变量内容的程序段最后都需要两个分号来表示该程序段的结束。
(3)最后的"*"作用表示默认的意思。
循环(while…do…done)
循环while…di…done的格式
当判断条件成立时,就进行条件循环,直到判断的条件不成立为止。
while((判断的条件))
do
程序段
done
跳出循环
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,shell使用两个命令来实现该功能:break和continue。
break命令
break命令允许跳出所有循环(终止执行后面所有循环)。
continue:跳转到循环开始的地方(循环判定条件)
死循环:指循环判定条件永远成立。
例:脚本进入死循环直至用户输入数字大于5.
要跳出这个循环,返回到shell提示符下,需要使用break命令。
continue
continue命令与break命令类似,他不会跳出所有循环,仅仅跳出当前循环。
while:
do
echo "输入1到5之之间的数字:"
read aNum
case $aNum in
1) echo "A"
;;
*) echo "stop!"
contine
echo "BBB!"
;;
esac
done
循环(for…do…done)
基本结构1:
for((初始值;条件;运算语句))
do
程序段
done
案例:使用for循环打印出1到10之间的数
#!/bin/sh
for((i=1;i<10;i++));do
echo $!;
done;
shell函数
bash 也跟其他编程语言一样也支持函数,一般在编写大型脚本中需要用到,它可以将shell脚本程序划分成一个个功能相对独立的代码块,使代码的模块化更好,结构更清晰,并可以有效减少程序的代码量。
但是bash作为一种解释性语言,bash在编程能力方面提供的支持并不像其他编译性语言那样完善,执行效率也会低很多。
shell函数的定义、执行与传参
格式1:
function 函数名() {
函数体
}
注意:函数体指函数功能
格式2:
函数名() {
函数体
}
可以带function 函数名()定义,也可以直接函数名()定义,不带任何参数。
执行:
函数名
直接使用函数名称即可调用某个函数。
传递函数
#!/bin/bash
aa="this is aa"
bb="this is bb"
function name() { #定义函数name
local cc="this is cc" #定义局部变量$cc
local dd="this is dd" #定义局部变量$dd
echo $aa,$bb #访问参数1和参数2
echo $cc #打印局部变量
return 0 #shell函数返回值是整形。
}
echo $dd #这里将会打印不生效,因为dd是局部变量。
name #使用函数name
变量的分类:
全局变量:在脚本中,函数外
局部变量:指在函数中声明的变量
函数返回值
funReturn(){
echo "这个函数会输入的两个数字进行相加运算"
echo "输入第一个数字:"
read aNum
echo "输入第二个数字:"
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $((aNum+$anotherNum))
}
funReturn
echo "输入的两数字之和为$? !"
函数返回值在调用该函数后通过 $? 来获得。
函数参数
在shell中,调用函数是可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,
例如,$1表示第一个参数,$2表示第二个参数…
但是,当n>=10时,需要使用$(n)来获取参数。
fun(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
fun 1 2 3 4 5 6 7 8 9 67 89
递归函数
bash也支持递归函数(能够调用自身的函数)
#!/bin/bash
function name() {
echo "aaa"
name
}
name