温州网页模板建站,长春企业宣传片制作公司,打开网址跳转到国外网站,福州搜索引擎优化目录
1 分支语句
2 多路分支语句
3 for的用法
4 while的用法
5 循环控制语句
6 练习 1 分支语句
语法结构: if 表达式then 命令表fi
如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。 if和fi是条件语句的语句括号, 必须成对使用; …目录
1 分支语句
2 多路分支语句
3 for的用法
4 while的用法
5 循环控制语句
6 练习 1 分支语句
语法结构: if 表达式then 命令表fi
如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。 if和fi是条件语句的语句括号, 必须成对使用; 命令表中的命令可以是一条, 也可以是若干条。
示例
//示例1
#!/bin/bash read -p input a filename: file //判断文件或者目录是否存在#test -e $file
#echo $?
if test -e $file //等同于 if [ -e $file ]注意空格不能随便删除
then echo $file exist //如果存在文件名或者目录名会输出
fi//示例2
#!/bin/bash read -p input a filename: file //判断文件或者目录是否存在if test -e $file //等同于 if [ -e $file ]注意空格不能随便删除
then echo $file exist //如果存在文件名或者目录名会输出
elseecho $file is not existecho please check
fi//示例3
#!/bin/bash
read -p input a filename: file //判断文件或者目录是否存在if [ -f $file ] //是否是普通文件
then //if 和 elif 都必须加thenecho $file is a file
elif [ -d $file ] //是否是目录
thenecho $file is a dir
elseecho $file is not a file or a dir
fi语法结构: if 表达式then 命令表1else 命令表2fi如果表达式为真, 则执行命令表1中的命令, 再退出if语句; 否则执行命令表2中的语句, 再退出if语句. 注意: 无论表达式是否为真, 都有语句要执行. 示例
判断用户是否存在如果存在打印存在如果不存在打印不存在。
之前的作法 其中^正则表达式代表第一个是linux;wc -l 统计字符大于0说明存在。
使用脚本写法
#!/bin/bash RETgrep ^linux: /etc/passwd | wc -l
if [ $RET -eq 1 ]
then echo exist
elseecho not exist
fitest命令使用总结
test命令测试的条件成立时, 命令返回值为真(0)否则返回值为假(非0). 2 多路分支语句
多路分支语句case用于多重条件测试, 语法结构清晰自然. 其语法为: 示例
判断输入的是yes/YES/y/Y 还是no/NO/N/n
#!/bin/bash read -p input yes/no: valcase $val inyes | y)echo input yes;;YES | Y)echo input YES;;no | n)echo input no;;NO | N)echo input NO;;
esac示例
#!/bin/bash #学生成绩分级管理
#90-100 A
#70-90 B
#60-70 C
#0-59 Dread -p input score: val#-o 或
#-a 与
# 非
# 等同于if [ $val -gt 100 ] || [ $val -lt 0] #0-100
if [ $val -gt 100 -o $val -lt 0] #0-100
thenecho input error valexit
fivalexpr $val / 10
case $val in9 | 10)echo A;;7 | 8)echo B;;6)echo C;;*)echo D;; #只有最后一个双分号可以省略
esac
3 for的用法
当循环次数已知或确定时使用for循环语句来多次执行一条或一组命令。格式为: for 变量名 in 单词表do命令表done变量依次取单词表中的各个单词, 每取一次单词, 就执行一次循环体中的命令. 循环次数由单词表中的单词数确定. 命令表中的命令可以是一条, 也可以是由分号或换行符分开的多条。
如果单词表是命令行上的所有位置参数时, 可以在for语句中省略 “in 单词表” 部分。
示例
#!/bin/bash filenamels
for file in $filename
doif [ -f $file ] #可以对文件/目录进行分类管理thenecho $file is a fileelseecho $file is not a filefi
done“$” 每个内容是单独的个体
“$*” 是一个整体
//示例1
#!/bin/bash for val in $
doecho $val
done//结果
linuxlinux:~/shell$ ./for.sh 1 2 3 4
1
2
3
4//示例2
#!/bin/bash for val in $*
doecho $val
done//结果
linuxlinux:~/shell$ ./for.sh 1 2 3 4
1
2
3
4//示例3
#!/bin/bash for val in $
doecho $val
done//结果
linuxlinux:~/shell$ ./for.sh 1 2 3 4
1
2
3
4//示例4
#!/bin/bash for val in $*
doecho $val
done//结果
linuxlinux:~/shell$ ./for.sh 1 2 3 4
1 2 3 4
示例
#!/bin/bash
#for file in 1 2 3 4 5 下面双括号等同C语言用法
for ((i 0; i 5; i i1))
do echo $file
done
4 while的用法
语法结构为
while 命令或表达式do命令表donewhile语句首先测试其后的命令或表达式的值如果为真就执行一次循环体中的命令然后再测试该命令或表达式的值执行循环体直到该命令或表达式为假时退出循环。
while语句的退出状态为命令表中被执行的最后一条命令的退出状态。
示例
#!/bin/bashi0
#while [ $i -lt 5 ]
while (( i 5 ))
doecho $iiexpr $i 1
done5 循环控制语句
break 和 continue
break n 则跳出n层;
continue语句则马上转到最近一层循环语句的下一轮循环上,
continue n则转到最近n层循环语句的下一轮循环上.
示例
#!/bin/bashi0
#while [ $i -lt 5 ]
while (( i 5 ))
doecho $iif [ $i 3 ]thenbreak #跳出本层循环 0 1 2 3#continue #跳出本次循环 0 1 2 3 3 3会一直打印3fiiexpr $i 1
done
6 练习
将当前目录下的普通文件归档到hello.tar中
#!/bin/bashfilenamels
for file in $filename
doif [ -f $file ]then tar -rf hello.tar $filefi
done计算下55的阶乘的结果并打印出来
#!/bin/bash
i5
RET1
while (( i 1 ))
doRETexpr $RET \* $i iexpr $i - 1
done
echo $RET