Shell脚本(一)
编写简单的脚本
一、 使用脚本显示根目录数据
1.新建文件test.sh
[root@centos01 ~]# vim test.sh
2.编辑test.sh
[root@centos01 ~]# vim test.sh
#!/bin/bash //声明
#test script //描述
#moe0526@126.com //脚本作者联系方式
echo "切换到根目录"
cd /
echo "显示根目录的数据"
ls
二、运行脚本
1.方法一:脚本文件路径(必须添加x权限)
root@centos01 ~]# ./test.sh
2.方法二:sh 脚本文件路径(sh可以不写声明)
[root@centos01 ~]# sh test.sh
3.方法三:source脚本文件路径
[root@centos01 ~]# source test.sh
重定向和管道符
1.基本输入输出
标准输入:文件号0,接收或者读取用户输入的数据,用<表示
标准的输出:文件号1,将数据显示在屏幕或者文件中,用>表示,>>表示追加输出
错误输出:文件号2,错误输出显示在屏幕或者文件中,用2>表示
混合输出:对或者错误都可以显示或输出到文件中显示,用&>表示
2.管道符|
把前一个命令执行的结果,当成一个命令处理的对象
3.输出的使用
[root@centos01 ~]# echo "hello world" //输出到屏幕
[root@centos01 ~]# echo "hello world"> ./1.txt //输出到文件
4.将错误输出数据,输出到1.txt文件
[root@centos01 ~]# asdf 2> 1.txt
5.混合输出显示到1.txt
[root@centos01 ~]# echo "aaa" &> 1.txt
6.管道符的应用
[root@centos01 ~]# netstat -anput | grep sshd
变量
1.变量的组装
变量名和变量值组成
2.变量的作用
方便条用变量中的参数
避免重复编写内容
变量的类型
1.自定义变量
管理员手动创建
根据脚本环境需要创建
2.环境变量
维护系统使用
不需要管理员手动创建
3.位置变量
命令给脚本传递参数使用
4.预定义变量
bash预定义变量属于特殊变量
用户不能修改预定义变量
配置变量
1.定义变量名为a和b
[root@centos01 ~]# a=benet
[root@centos01 ~]# b=6.0
2.调用变量
[root@centos01 ~]# echo $a $b
benet 6.0
变量赋值常用的符号
1.双引号
许引用其他的变量值
2.单引号
禁止引用其他变量
3.反撇
将命令执行的结果赋值给变量
4.read -p
接收用户输入内容赋值
5.使用双引号引用变量
[root@centos01 ~]# c="accp $b"
[root@centos01 ~]# echo $c
accp 6.0
6.使用单引号禁止引用变量
[root@centos01 ~]# d='accp $bb'
[root@centos01 ~]# echo $d
accp $bb
7.使用反撇将命令结果赋值变量
[root@centos01 ~]# e=`netstat -anput | grep 22`
[root@centos01 ~]# echo $e
8.使用read -p 将用户输入的内容赋值给age变量名
[root@centos01 ~]# read -p "请输入年龄:" age
变量的运算
1.变量的运算符
+:加
-:减
*:乘
/:除
2.加法
[root@centos01 ~]# a=1
[root@centos01 ~]# b=2
[root@centos01 ~]# expr $a + $b
3
3.减法
[root@centos01 ~]# expr $b - $a
1
4.乘除法
[root@centos01 ~]# expr $b \* $b / $a
4
特殊变量
1.环境变量
系统变量
2.位置变量
提供9个位置
3.预定义变量
$#:命令行中位置从那时
$*:所有位置参数
$?:判断脚本执行状态0成功,非0失败
$0:脚本进程名字
4. 特殊变量的基本使用
[root@centos01 ~]# cat ./test.sh
#!/bin/bash
#test script
#moe0526@126.com
echo "$0 获取当前执行脚本文件名" $0
echo "$* 所在位置参数" $*
echo "$# 显示脚本中参数的总数" $#