1.Shell脚本:命令解释器,介于系统内核与用户之间,负责解释命令行
通过/etc/shells文件可以了解当前系统所支持的Shell脚本种类
[root@crushlinux /]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
2.用户的登录Shell
登录后默认使用的Shell程序,一般为 /bin/bash
不同Shell的内部指令、运行环境等会有所区别
3.编写脚本代码
使用vi文本编辑器
每行一条Linux命令,按执行顺序依次编写
[root@crushlinux /]# vim first.sh
cd /boot/
pwd
ls -lh vlm*
添加可执行权限:
[root@crushlinux /]# chmod +x first.sh
4.执行脚本文件
方法一:脚本文件路径
方法二:sh 脚本文件路径
方法三:source 脚本文件路径
[root@crushlinux /]#./first.sh 必须有x权限
[root@crushlinux /]#sh /first.sh
[root@crushlinux /]#source /first.sh 不要求 x 权限
类型 |
操作符 |
用途 |
重定向输入 |
< |
从指定的文件读取数据,而不是从键盘输入 |
重定向输出 |
> |
将输出结果保存到指定的文件(覆盖原有内容) |
>> |
将输出结果追加到指定的文件 |
|
标准错误输出 |
2> |
将错误信息保存到指定的文件(覆盖原有内容) |
2>> |
将错误信息追加到指定的文件中 |
|
混合输出 |
&> |
将标准输出、标准错误的内容保存到同一个文件中 |
5.管道操作符号“|”
将左侧的命令输出结果,作为右侧命令的处理对象
格式:cmd1 | cmd2 [... | cmdn]
[root@crushlinux ~]# rpm -qa |grep shell
6.变量:
自定义变量:由用户自己定义、修改和使用
环境变量:由系统维护,用于设置工作环境
位置变量:通过命令行给脚本程序传递参数
预定义变量:Bash中内置的一类变量,不能直接修改
定义一个新的变量
格式:变量名=变量值
变量名以字母或下划线开头,区分大小写,建议全大写
查看变量的值
格式:echo $变量名
[root@crushlinux ~]# Prouduct=Benet
[root@crushlinux ~]# Version=5.0
[root@crushlinux ~]# echo $Prouduct
Benet
[root@crushlinux ~]# echo $Prouduct $Version
Benet 5.0
赋值时使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
反撇号:命令替换,提取命令执行后的输出结果
从键盘输入内容为变量赋值
格式: read [-p "提示信息"] 变量名
设置变量的作用范围
格式1:export 变量名 ...
格式2: export 变量名=变量值 ...
—— 两种格式可以混合使用
[root@crushlinux /]#echo "$Product $Version"
Benet 5.0
[root@crushlinux /]#export Product Version
[root@crushlinux /]#bash
[root@crushlinux /]#echo "$Product $Version"
Benet 5.0
[root@crushlinux /]#exit
整数变量的运算
格式:expr 变量1 运算符 变量2 [运算符 变量3] ...
常用运算符
加法运算:+
减法运算: -
乘法运算: \*
除法运算: /
求模(取余)运算: %
[root@crushlinux ~]# x=35
[root@crushlinux ~]# y=16
[root@crushlinux ~]# expr $x + $y
51
[root@crushlinux ~]# expr $x - $y
19
[root@crushlinux ~]# expr $x \* $y
560
[root@crushlinux ~]# expr $x / $y
2
[root@crushlinux ~]# expr $x % $y
3
7.特殊的shell变量
环境变量
由系统提前创建,用来设置用户的工作环境
配置文件: /etc/profile、~/.bash_profile
位置变量
表示为 $n,n为1~9之间的数字
预定义变量
$#:表示命令行中位置参数的个数
$*:表示所有位置参数的内容
$?:表示前一条命令执行后的返回状态
$0:表示当前执行脚本或程序的名称
实验部分
要求:创建用户并设置密码
[root@crushlinux ~]# vim yonghu.sh
#!bin/bash
read -p "请输入用户名" a
useradd $a
read -p "请输入密码"
passwd $a
执行:
[root@crushlinux ~]# sh yonghu.sh
请输入用户名aaa
请输入密码123
更改用户 aaa 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。