什么是shell?
| 1 | shell, 即命令解释器.由命令、变量和流程控制语句有机的结合 | 
| 1 | echo "df -h" | 
脚本统一目录:mkdir -p /server/scripts
| 1 | $ vim oldboyedu.sh | 
| 1 | 脚本添加版权信息 | 
| 1 | 执行脚本 | 
定义全局变量
| 1 | export OLDBOY=1 注:变量建议大写 | 
取消全局变量
| 1 | unset OLDBOY 取消全局变量 | 
变量定义要求
| 1 | 变量以字母开头,可以存在下划线。但不包括特殊字符 | 
单引号与双引号区别
| 1 | 单引号:所见即所得 | 
特殊变量
| 1 | 位置变量 | 
| 1 | 位置变量-测试环境 | 
| 1 | 进程状态变量 | 
变量的定义
| 1 | 1. 直接赋值 例:Dir=/var/log | 
写个atm程序
| 1 | 要求:让你输入你的银行卡账号和密码,然后在屏幕上打印你的输入结果。 | 
文件类型-判断
| 1 | 示例: | 
| 1 | “字符串1” = “字符串2” 若字符串1等于字符串2则为真,可以使用“==”代替“=” | 
按照文件类型进行判断
| 测试选项 | 作用 | 
|---|---|
| -b 文件 | 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) | 
| -c 文件 | 判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真) | 
| -d 文件 | 判断该文件是否存在,并且是否为目录(是目录为真) | 
| -e 文件 | 判断该文件是否存在(存在为真) | 
| -f 文件 | 判断该文件是否存在,并且是否为普通文件(是普通文件为真) | 
| -L 文件 | 判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真) | 
| -p 文件 | 判断该文件是否存在,并且是否为管道文件(是管道文件为真) | 
| -s 文件 | 判断该文件是否存在,并且是否为非空(非空为真) | 
| -S 文件 | 判断该文件是否存在,并且是否为套接字文件(是套接字文件为真) | 
判断整数
| 1 | -eq 等于equal | 
Bash中的“[[]]”与“[]”的区别
| 1 | "[[]]" 是“[]”的提高版本,但“[[]]”仅在Bash、Zsh和Korn Shell中可用,而“[]”几乎可以在任一种shell下使用。不过,像我们老版本的Gentoo都支持bash,所以还是建议使用双中括号的,了解以下区别即可。 | 
if语句
| 1 | --单分支条件语句: 一个条件一个结果,可以使用单分支if语句 | 
传参方式-if语句判断-实例1:
| 1 | #!/bin/bash | 
读入赋值方式-if语句判断-实例2:
| 1 | #!/bin/bash | 
读入赋值方式-if语句判断-实例2-if判断优化版:
| 1 | [root@root scripts]# vim checkpasswd.sh | 
嵌套的if/else语句-实例
| 1 | 定义整型变量命令: declare -i | 
| 1 | [root@root scripts]# vim qiantao.sh | 
多条件、多级的if/else语句-实例
| 1 | #!/bin/bash | 
case语句
| 1 | [root@oldboy202 scripts]# vim case.sh | 
for循环语句
| 1 | cd /tmp | 
| 1 | for i in {1..10};do echo "这是"$i;done | 
案例-测试
| 1 | 要求: | 
for循环练习1:批量创建10个用户,设置并显示用户随机密码
| 1 | vim useradd.sh | 
for循环练习2:打印操作系统名称
| 1 | #!/bin/bash | 
for循环案例3:如果文件存在,则打印此文件,否则打印一个错误信息。
| 1 | vim file_check.conf | 
for 循环案例4:使用命令替换的for循环实例
| 1 | [root@oldboy202 ~]# vim change.sh | 
案例5:for语句倒计时脚本-生成序列
| 1 | 预备知识: | 
while语句(又称死循环)
| 1 | 善于执行守护进程,以及我们希望循环不退出持续执行。 | 
技巧:sh -x 参数会把脚本的执行过程也会显示出来,如:
| 1 | [root@oldboy202 scripts]# sh -x start.sh | 
注:windows换行符是\r\n ,而linux换行符是\n。这样的话,win机器上编写的脚本上传到Linux执行后会报错。
解决方法1:yum install -y dos2unix && dos2unix win.sh
解决方法2:将nodepad++转换为Unix格式
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/07/15/老男孩-day12-shell编程/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
 
		