(格式约定:标题2,标题3 命令或终端显示 文件名或文件关键内容)
1 开始
1.1 输入和输出
1,使用-e参数在echo中显示\n
2,用
chmod u+x aaa.sh命令改变.sh权限,可以直接用文件名执行
1.2 变量的测试
使用
${MSG:-"guten tag"}命令来测试变量MSG是否为空或者未设置,如果为空或者位设置,则设置为"guten tag"
使用
${MSG-"guten tag"}命令来测试变量MSG是否未设置,如果未设置,则设置为"guten tag"
更多在在鸟哥的Linux私房菜315页
1.3 算数运算
使用$(( ))来进行算数运算
1.4 使用$()获得其他命令返回
上例中,使用了
$(date)命令获得了今天的日期
2 逻辑
2.1 使用test命令来测试
测试案例如下
上述测试例子中,首先测试
/dev/fb是否存在,然后判断
/dev/fb是字符型设备还是块类型设备,经过测试,
/dev/fb是字符型设备,
略毁三观
2.2 使用while [ ] 实现循环
例子如下
执行结果如下
上例中有如下要点
1,使用了while循环
2,使用了
while [ 1 -eq 1 ]实现C语言中的while(1)的功能
3,使用了
date命令来判断输入日期是否正确(但是这样可能没有移植性,测试版本 centos 6.4 kernel:2.6.32.65)
4,使用了
/dev/null文件来湮没掉垃圾输出
2.3 使用if实现判断
测试例子如下
本例中使用了正则表达式=~
2.4 使用case进行选择
示例代码如下
运行结果如下
2.5 使用for 进行数组遍历
例子如下
上述例子先定义了一个数组,然后循环ping之并获得结果,其运行结果如下:
问题:1,google上不去但是给出了能ping的结果(后来发现确实能ping通。。。但是确实上不去) 2,
无法ctrl+c结束程序
2.6 使用函数
还是2.5中的案例,代码如下
这个例子中,把实现的ping功能放到了函数里
(仅仅是为了测试函数而已)
注意:1,shell中的函数的返回值的两种方法 (1)echo,然后用$()获得结果 (2)全局变量
测试的结果跟2.5中的一样
2.7 综合例子
这个示例仿照系统自带的seq命令,不过对象是字母
测试结果
在这个例子中,函数、正则表达式、格式化输入输出、流程控制等都得到了应用。
以上,Shell Script这一章暂时告一段落。