Shell脚本的概述及其应用

1.什么是shell脚本

shell脚本是一种解释型语言(c语言是描述型语言),用shell脚本保存执行动作,用脚本判断命令执行的条件,用脚本来实现动作的批量执行。一个shell程序,又被称作一个脚本,shell脚本是将各种命令通过逻辑语句组合而成的程序,是一种很容易使用的工具,它可以通过将系统调用公共程序,工具和编译过的二进制程序粘和在一起来建立应用。

1.2shell脚本的概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限
  • 可结合各种Shell控制语句以完成更复杂的操作

1.3shell的作用

  • 批处理
  • 定时性
  • 便捷灵活的管理系统任务和其他重复工作的过程

1.4shell的脚本应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

2.关于shell的命令和语言

[root@localhost ~]# cat /etc/shells     #查看系统中存在的shell脚本
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

进入的编译环境不同,所具备的功能也一定会有所不同

[root@localhost ~]# sh     #直接输入命令,可以直接进入到sh的编译环境
sh-4.2# 

3.写shell脚本

3.1简单的脚本

[root@localhost ~]# vim first.sh   #first为脚本名称其他为固定用法
#!/bin/bash    #声明解释器
<<COMMENT      #<<注释,并不会执行(COMMENT可变但必须结尾一样)
很简单的脚本
COMMENT


或者跟#
#很简单的脚本        #这样注释也可以

echo "hello world!!!!"          #所见即所得

如下图
在这里插入图片描述

3.3如何运行脚本

[root@localhost ~]#chmod +x first.sh         #给脚本可执行权限
[root@localhost ~]#./first.sh              #然后./执行
hello world!!!!
[root@localhost ~]# bash first.sh      #或者直接调用bash来运行
hello world!!!!

或者用下面的类型执行脚本

[root@localhost ~]# . first.sh 
hello world!!!!
[root@localhost ~]# source first.sh 
hello world!!!!

3.4创建脚本示例

首先创建一个脚本并进入直接编写

[root@localhost ~]# vim cp.sh
#!/bin/bash
mkdir x
cd x
touch y
mv y /opt


[root@localhost ~]#bash ./cp.sh
[root@localhost ~]# ls /opt
rh  y

重定向

<               #从指定的文件读取数据,而不是从键盘输入
>              #将输出结果保存到指定文件,会覆盖文件原内容
>>#将输出结果追加到文件内的尾部
2>             #将错误信息保存到指定文件,覆盖文件内容
2>>            #将错误信息追加到指定文件中
&>            #将标准输出、标准错误的内容保存到同一个文件中

整数变量的计算

expr 变量名 运算符 变量名 
echo $[ 变量运算符变量 ]     也可以是 :echo $(( 变量运算符变量 ))
[root@localhost ~]# expr 2 + 2              #加法
4
[root@localhost ~]# expr 5 - 2              #减法
3
[root@localhost ~]# expr 5 % 1             #取余数(5可以被整除光所有没有余数)
0
[root@localhost ~]# expr 5 % 2              #取余数(5等于2*2+1,所有余数为1)
1
[root@localhost ~]# expr 3 / 2             //取整数(除法,无线逼近目标数字)
1
[root@localhost ~]# expr 1 / 2             
0
[root@localhost ~]# a=1                        #赋值,并计算
[root@localhost ~]# b=5
[root@localhost ~]# echo $[ $a+$b]
6
[root@localhost ~]# echo $[ 2**8 ]              #计算次方
256
[root@localhost ~]# echo $[ 2**7 ]
128
[root@localhost ~]# echo "9.99+1" | bc            #计算带小数点的值
10.99

4.变量

变量名:字母、数字、下划线组成、不能是数字开头,区分大小写。不能事特殊符号

unset a      #取消变量

4.1预定义变量

$#                        #表示命令行中位置参数的个数
#@                        #表示所有位置参数,只是列出以单个形式列出
$*                        #表示所有位置参数的内容
$?      #表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常
$$                        #表示返回当前进程的进程号
$!                        #返回最后一个后台进程的进程号
$0                        #表示返回当前进程的进程号

4.2自定义变量

#!/bin/bash
创建用户张三并且密码是123
user=zhangsan    
passwd=123
useradd $user
echo "$passwd" | passwd --stdin $user

优化后即可以输入想创建的用户并自定义密码,最后可以查看用户是否创建成功

#!/bin/bash
read -p "请输入用户名:" user
read -p "请输入密码:" passwd
useradd $user
echo "$passwd" | passwd --stdin $user
id $user



[root@localhost ~]# bash gg.sh
请输入用户名:lisi
请输入密码:123
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
uid=1046(lisi) gid=1046(lisi)=1046(lisi)

4.3环境变量

  • 系统已定义好的全局变量,其变量名必须是大写
env :查看系统中所有的环境变量
vim /etc/profile :编辑环境变量,可以永久性添加环境变量
[root@localhost ~]# export aa=10         #临时将自定义变量加入环境变量中
[root@localhost ~]# env | grep aa
aa=10
[root@localhost ~]# export PATH=$PATH:/root      #临时将/root目录加入环境变量中

4.4位置变量

[root@localhost ~]# vim ss.sh
#!/bin/bash
echo $0            #$0表示当前执行的脚本
echo $1            #$1表示第一个参数
echo $2            #$2表示第二个参数
echo $n            #表示第n个参数
[root@localhost ~]# chmod +x ss.sh   //给予文件可执行权限
[root@localhost ~]# ./ss.sh a b      //脚本有位置变量,在执行脚本时需要根据位置变量添加参数
./ss.sh
a
b
[root@localhost ~]# vim user.sh
#!/bin/bash
#创建用户
useradd $1
echo "$2" | passwd --stdin $1
[root@localhost ~]# chmod +x user.sh 
[root@localhost ~]# ./user.sh zhangsan 123
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。       

示例

#!/bin/bash
#本地的yum源
mount /dev/sr0 /mnt
mkdir /etc/yum.repos.d/bak/
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
echo "[centos7]
name=centos7
baseurl=file:///mnt
enabled=1
gpgcheck=0" >>/etc/yum.repos.d/yum/repo
yum repolist

#!/bin/bash
name=`whoami`
p=`pwd`
h=`hostname`
time=`date +%Y-%m-%d\ %H:%M:%S`
pid=`ps -ef | wc -l`
user=`users | wc -w`
echo -e "----------------------------------------------------------------------\e["
echo -e "\e[1;32m#                      System Info Table           \e[3;70H#\e[0m"
echo -e "\e[1;31m#  当前登陆用户为:$name                            \e[4;70H#\e[0m"
echo -e "\e[1;33m#  当前登录目录为:$p                               \e[5;70H#\e[0m"
echo -e "\e[1;34m#  当前登录主机为:$h                               \e[6;70H#\e[0m"
echo -e "\e[1;35m#  当前系统时间为:$time                            \e[7;70H#\e[0m"
echo -e "\e[1;32m#  当前系统运行的进程数为:$pid                     \e[8;70H#\e[0m"
echo -e "\e[1;34m#  当前系统登录的用户数为:$user                    \e[9;70H#\e[0m"
echo -e "\e[1;31m#  任何问题请联系:111222333444                     \e[10;70H#\e[0m"
echo -e "----------------------------------------------------------------------\e["

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值