四、其他控制语句
1.case分支格式:
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
* )
默认执行的命令序列
esac
2.until循环语句格式:
until 条件测试命令
do
命令序列
done
3.shift迁移语句
迁移位置变量,将 $1~$9 依次向左传递
4,break语句
在for、while、until等循环语句中,用于跳出当前所在的循环体,执行循环体后的语5,continue
在for、while、until等循环语句中,用于跳过循环体内余下的语句,重新判断条件以便执行下一次循环句
由用户从键盘输入一个字符,并判断该字符是否为字母、数字或者其他字符,并输出相应的提示信息。
[root@localhost ~]# vi hitkey.sh
#!/bin/bash
read -p "ress some key, then press Return: " KEY
case "$KEY" in
[a-z] | [A-Z])
echo "It's a letter."
;;
[0-9])
echo "It's a digit."
;;
*)
echo "It's function keys,spacebar or other keys. "
esac
[root@localhost ~]# sh hitkey.sh
Press some key, then press Return: K
It's a letter.
[root@localhost ~]# sh hitkey.sh
Press some key, then press Return: 6
It's a digit.
[root@localhost ~]# sh hitkey.sh
Press some key, then press Return: ^[[19~ //按F8键
It's function keys,spacebar or other keys.
编写一个shell程序,计算多个整数值的和,需要计算的各个数值由用户在执行脚本时作为命令行参数给出。
[root@localhost ~]# vi sumer.sh
#!/bin/bash
Result=0
while [ $# -gt 0 ]
do
Result=`expr $Result + $1`
shift
done
echo "The sum is : $Result"
[root@localhost ~]# chmod a+x sumer.sh
[root@localhost ~]# ./sumer.sh 12 34
The sum is : 46
循环提示用户输入字符串,并将每次输入的内容保存到临时文件“/tmp/input.txt”中,当用户输入“END”字符串时退出循环体,并统计出input.txt文件中的行数、单词数、字节数等信息,统计完后删除临时文件。
[root@localhost ~]# vi inputbrk.sh
#!/bin/bash
while true
do
read -p "Input a string: " STR
echo $STR >> /tmp/input.txt
if [ "$STR" = "END" ] ; then
break
fi
done
wc /tmp/input.txt
rm -f /tmp/input.txt
[root@localhost ~]# sh inputbrk.sh
Input a string: wandogn
Input a string: dongdonga
Input a string: END
3 3 22 /tmp/input.txt
删除系统中的stu1~stu20各用户账号,但stu8、stu18除外。
[root@localhost ~]# vi delsome.sh
#!/bin/bash
i=1
while [ $i -le 20 ]
do
if [ $i -eq 8 ] || [ $i -eq 18 ] ; then
let i++
continue
fi
userdel -r stu$i
let i++
done
[root@localhost ~]# sh delsome.sh
[root@localhost ~]# grep "stu" /etc/passwd
stu8:531:531::/home/stu8:/bin/bash
stu18:541:541::/home/stu18:/bin/bash
五、Shell函数应用
1,语法
function 函数名 {
命令序列
}
或者:
函数名() {
命令序列
}
在脚本中定义一个help函数,当用户输入的脚本参数不是“start”或“stop”时,加载该函数并给出关于命令用法的帮助信息,否则给出对应的提示信息。
[root@localhost ~]# vi helpfun.sh
#!/bin/bash
help() {
echo "Usage: "$0" start|stop"
}
case "$1" in
start)
echo "Starting ..."
;;
*)
help
esac
[root@localhost ~]# chmod a+x helpfun.sh
[root@localhost ~]# ./helpfun.sh start
Starting ...
[root@localhost ~]# ./helpfun.sh restart
Usage: ./helpfun.sh start|stop
在脚本中定义一个加法函数,用于计算两个数的和,并调用该函数分别计算12+34、56+789的和。
[root@localhost ~]# vi adderfun.sh
#!/bin/bash
adder() {
echo `expr $1 + $2`
}
adder 12 34
adder 56 789
[root@localhost ~]# sh adderfun.sh
46
845
本文出自 “Hello_小壮” 博客,转载请与作者联系!