接上一章
3)while语句
格式
while condition
do
command
done
具体使用实例
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
无限循环:
while :
do
command
done
或者
while true
do
command
done
下面也可以
for (( ; ; ))
4)until循环
执行命令一直到条件为true才停止
格式
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
5)case…esac语句
多选择语句,与其他语言中switch…case相似,多选择分支结构语句
格式
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
实例
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字' //无匹配模式的时候,使用*捕获,类似于java中的default分支
;;
esac // 跟switch case语句一样支持整数类型
site="runoob"
case "$site" in
"runoob") echo "菜鸟教程"
;;
"google") echo "Google 搜索"
;;
"taobao") echo "淘宝网"
;;
esac // 也可以支持字符串类型,这和其他语言是不一样的
shell里取值后面必须为单词in,每一个都必须以有括号结束,取值可以为变量也可以为常数,结束标志是;;
6)跳出循环
1)跟其他语言一样,break跳出所有循环
2)continue也一样,仅仅跳出当前循环
注意:
shell中的for循环也可以使用其他语言中的格式
比如:
for((i=1;i<=5;i++));do
echo "这是第 $i 次调用";
done;
但是运行的时候得用 bash代替sh
12.shell函数
1)定义格式
[ function ] funname [()]
{
action;
[return int;]
} //可以带function定义,也可以直接fun定义,不带任何参数
2)带有return函数定义
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
3)函数参数
在函数内部,使用$n来获取参数的值,比如$1为第一个参数
- $# 参数个数
- $* 所有参数
注意:当n大于等于10 必须用${n}来获取参数。
今日编程记录:
:<<EOF
demo(){
echo 第一个函数
}
echo 函数开始
demo
echo 函数结束
demo
echo 两个数相加的结果为 $?
demo1(){
name=9
return $name
}
demo1
echo $? //使用$?来接收参数
echo $? //结果为0 只能接收一次,而且中途不能有其他语句,有其他语句也会显示为0
demo(){
echo 进行加法运算
echo 请输入第一个数字:
read name1
echo 请输入第二个数字:
read name2
echo 两个数字为$num1和$num2
return $(($num1+$num2)) // 返回参数时必须用双括号
}
demo
echo 两个数相加的结果为 $?
demo3(){
echo 第一个参数为:$1
echo 第二个参数为:$2
echo 第三个参数为:$3
echo 第四个参数为:$4
echo 第十个参数为:${10} //大于10的必须注意使用花括号
echo 参数总数为:$#
echo 所有参数为 $*
}
demo3 1 2 3 4 5 6 7 8 9 10
demo1(){
name=9
return $name
}
demo1
echo xue
echo $? // 结果为0
i=1
while(( $i<=5 )) //这里也是需要双括号
do
echo $i
let "i++" // 这里也必须使用let 目前还没搞清楚,后续再了解
done
echo please enter 1-4:
echo 你输入的数字为:
read num
case $num in
1) echo 你选择了 1
;;
2) echo 你选择了 2
;;
3) echo 你选择了 3
;;
4) echo 你选择了 4
;;
*) echo 你选择了其他数字
;;
esac
while : //这里 注意:while和:之间必须使用一个空格// 哇 shell和其他语言真的好多不一样 尤其空格这里特别要注意
do
echo 输入一到五之间的数字:
read num
case num in
1|2|3|4|5) echo 你输入的数字为 $num case esac语句这里还可以这么用,方便
;;
*) echo not 1-5 之间的数字
break
;;
esac