Shell脚本应用(一)

时间:2022-11-26 19:19:32

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: 所有的身份验证令牌已经成功更新。