参考:http://study.163.com/course/courseMain.htm?courseId=306001
一、创建第一个 Shell 脚本
1、任务
(1)、添加一个名为 zhangsan 的用户
useradd zhangsan
(2)、将用户 zhangsan 的密码设置为 123456
passwd zhangsan
2、整理执行语句
#2016.11.26,by air
echo "正在创建用户账号 zhangsan ......"
useradd zhangsan
echo "正在为用户 zhangsan 设置密码......"
echo "创建成功."
3、运行脚本
假设脚本文件名为 uad.sh
方法1:
chmod +x uad.sh
./uad.sh
方法2:
sh uad.sh
方法3:
source uad.sh
二、管道操作
将一端的命令输出交给另一端的命令处理
格式:命令 1 | 命令 2
注:管道是单向的
在 etc 目录下查找以 .conf 结尾的文件,查找的结果以一行一个的形式列出来
find /etc -name "*.conf" -type f
通过 wc 命令进行统计个数
find /etc -name "*.conf" -type f | wc -l
列出系统中所有的进程信息
ps aux
只列出包含 httpd 的进程信息
ps aux | grep httpd
三、重定向操作
改变执行命令时的默认输入、输出
(1)重定向输入
操作符:<
用途:从指定文件读取数据,而不是从键盘读入
(2)重定向输出
操作符:>、>>
用途:将输出结果覆盖、追加到指定文件
(3)标准错误输出
操作符:2>、2>>
用途:将错误信息覆盖、追加到指定文件
(4)混合输出
操作符:&>、&>>
用途:将标准输出和错误信息覆盖、追加到指定文件
查看当前 linux 内核版本
uname -r
将版本信息保存到文件
uname -r > version.txt
查看 version.txt
cat version txt
如果运行 cat version2.txt 但是没有 version2.txt 这个文件会报错:
cat: version2.txt : 没有那个文件或目录
将错误信息输出到一个 error.txt 文件中
cat version2.txt 2> error.txt
然后执行 cat error.txt
显示 cat: version2.txt : 没有那个文件或目录
四、逻辑分割
处理多条命令之间的逻辑关系
逻辑与:&&
逻辑或:||
顺序执行:;
四、使用变量
1、变量基本操作
定义及赋值
格式:变量名=变量值
引用变量
格式:$变量名、${变量名}
双引号:允许引用、\转义
单引号:禁止引用、转义
反撇号,或者$():以命令输出进行替换
2、常见的环境变量
用来记录/设置运行参数
系统赋值:USER、LOGNAME、HOME、SHELL、.......、
用户操作:PATH、LANG、CLASSPATH、......、
3、其它特殊变量
$?:前一条命令的状态值,0为正常、非0异常
$0:脚本自身的程序名
$1-$9:第1-第9个位置参数
$*:命令行的所有位置参数的内容
$#:命令行的位置参数个数
五、数值运算及处理
1、整数运算操作
使用 expr 命令,计算表达式
格式:expr 数值1 操作符 数值2
使用 $[] 表达式,算式替换
格式:$[数值1 操作符 数值2]
2、几个数值处理技巧
变量的递更处理
格式:let 变量名++、let 变量名--
使用随机数
RANDOM 变量
生成数字序列
格式:seq 首数 末数、seq 首数 增量 末数
3、小数运算操作
六、字符串处理
1、子串截取操作
2、字符串替换
3、使用随机字符串