七、流程控制
1、if判断
1)语法
if [ 条件判断 ];then
程序
fi
或者
if [ 条件判断 ]
then
程序
fi
注意:
① [ 条件判断 ] 中括号和条件判断式之间必须有空格
② if后要有空格
2)实例
因为Shell写的有问题,因此报错
2、case语句
1)语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
.....其他分支......
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意:
① case行尾必须为单词 “in” ,每个模式匹配必须以右括号 “)” 结束。
② 双分号 “ ;; ” 标识命令序列结束,相当于java中的break;
③ 最后的 “ *) ” 表示默认模式,相当于java中的default。
2)实例
3、for循环
1)语法
for((初始值;循环控制条件;变量变化 ))
do
程序
done
或
for 变量 in 值1 值2 值3......
do
程序
done
2)实例1
3)实例2
打印所有输入的参数:
比较一下$*和$@
获得结果还是分开的。
改变代码:
能体现出“$*”代表一个整体,“$@”代表各个参数
4、while循环
1)语法
while [ 条件判断式 ]
do
程序
done
2)实例
八、read读取控制台输入
1、语法
rend(选项)(参数)
选项:
-p:指定读取值时的提示符
-t:指定读取值时的时间(秒)
参数:
变量:指定读取值的变量名
2、实例
九、函数
1、系统函数
1)basename语法
basename[string/pathname][suffix]:basename命令会删掉所有前缀包括最后一个(‘/’)字符,然后将字符串显示出来
选项:
suffix为后缀,如果suffix被指定了,basename会将 pathname或string中的 suffix去掉。
实例:
2)dirname语法
dirname 文件绝对路径 :从指定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)
实例:
2、自定义函数
1)语法
[ function ] funname[()]
{
Action;
[return int;]
}
funname
2)经验技巧
① 必须在调用函数的地方之前先声明函数,shell脚本是逐行运行的。不会像其他语言一样先编译。
② 函数返回值只能通过 $? 系统变量获得,可以显示加:return 返回,如果不加将以最后一条命令运行结果,作为返回值。return后跟数值 n(0-255)
3)实例