您的位置:首页 > 运维架构 > Shell

NO3.Shell脚本学习——编写Shell脚本

2017-12-21 23:03 330 查看
Shell脚本

用途:完成特定的、较复杂的系统管理任务。

格式:集中保存多条Linux命令,普通文本文件

执行方式:按照预设的顺序依次执行的命令

执行Shell脚本的方式:
1.bash test.sh
//不需要写解析器
//不需要给脚本设置执行权限

./test.sh
//需要写解析器——脚本首行
#!/bin/bash
//需要给脚本设置执行权限
chmod a+x test.sh

写个Shell的小例子
test.sh:

#!/bin/bash
echo '23123123'
echo 'disk space:'
echo
df -Th
echo
echo 'free space:'
free -m

小例子:每周五17:30 清理FTP服务器的公共共享目录
检查/var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到/var/log/pubdir.log日志文件中,然后清空该目录
示例:

vi /opt/ftpclean.sh
`#!/bin/bash
date >> /var/log/pubdir.log
ls -lhR /var/ftp/pub >> /var/log/pubdir.lg
rm -rf /var/ftp/pub/*

crontab -e
30 17 * * 5  /opt/ftpclean.sh`

Shell变量种类

用户自定义变量 name="user1" 引用:${name}

预定义变量

位置变量**

输入赋值:read [-p "信息"] 变量名
双引号:能解析变量
单引号:不能解析变量
反引号:解析命令并输出

删除变量:
unset
变量名
位置变量(传参):

test.sh
#!/bin/bash
#test.sh
echo $1
echo $2
echo $3
echo $4
echo $5
echo $6
echo $7
echo $8

调用:sh test.sh 1 2 3 4 5 6 7 ...(最多识别9个)
执行结果:
1
2
3
4
5
6
7
...
预定义变量:
$#:命令行中位置参数的个数
$*:所有参数的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0表示执行异常或出错
$0:当前执行的进程/程序名

shell计算
$(($1+$2)) (不需要转义) or expr 2 + 3 +4 (需要转义)
expr 4 * 2
expr 4 / 2
expr 4 % 2
and so on...

shell输入、输出
输入
``
echo -n||e
-n
-e可以解析转义字符

//设置字体颜色
echo -e "httped process \033[32;40m[OK]\033[0m"
\033[前景颜色;背景颜色m
\033[0m恢复到系统默认的颜色
前景颜色:30-37
背景颜色:40-47
<br/>**输出**<br/>

cat、head(首n行)、tail(尾n行)、tee(输出一份并保存一份)、nl(加行号)
``
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 脚本 执行