Shell基础

一、什么是shell脚本

shell是一种命令解释器,用来解释一系列命令,而shell脚本就是很多个命令组合成的文件。

shell脚本的概念

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

shell脚本应用场景

1、重复性操作
2、交互性任务
3、批量事务处理
4、服务运行状态监控
5、定时任务执行
等等

二、shell脚本基础命令

# 正文       单行注释

<<COMMENT
......
......
COMMENT       多行注释   COMMENT可更换 

shell脚本几种运行方式

有权限的情况

1、给予脚本执行权限 (会开启新的bash,执行完退出)

chmod +x test.sh 
./test.sh
然后直接相对路径或者绝对路径运行脚本

没有权限的情况

2、bash 、sh运行脚本(会开启新的bash,执行完退出)

bash test.sh
sh test.sh

3、source或"."运行脚本(不会开启新的bash)

source test.sh
. test.sh
bash -x test.sh  逐行调试检测脚本              
bash -n test.sh  只能够检测语法上的错误  (直接确定某一行)

一键创建本地yum源

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

shell脚本变量

自定义变量

变量名=变量值       变量名:字母、数字、下划线组成,不能以数字开头,区分大小写,不能是特殊符号(定义一个变量之后,切换一个新的bash 不可用)
echo $SHLVL 查看当前bash层级
引用变量用$
echo $a
unset 变量名     取消变量
set   查看系统所有自定义变量,与grep一起用方便 
declare -i int=10  定义一个变量为整数型     浮点型 float double  字符串型 string
a=`date`   ``也可引用变量
a=$(date)    $()引用变量
rpm -ql $(rpm -qf $(which rz))
readonly  a  定义变量a为只读  (不可删除、不可更改)  只能够退出这个shell
read a  交互式赋值给变量a
 read -p "请输入你的名字:" name
 read -n 5 name  -n 只能输入5个字符   -s 隐藏输入   

当定义一个a变量
不可使用$armb 他会把armb看出一个整体 ,系统中没有armb这个变量 所以要${a}rmb

变量值中间不可以加空格,若要加空格需要加转移字符 “\ ”
单引号里$变量名直接就输出$变量名 双引号里$变量名就输出变量值

创建用户的脚本
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

环境变量

查看系统中有多少环境变量

env   查看系统中的环境变量
echo $HOME  输出单个环境变量
echo $USER
echo $UID

自己添加环境变量

永久的
vim /etc/profile
在里面添加一条
例如  export aa=10
然后重新读取一下
source /etc/profile
临时的
export aa=10

直接为脚本做执行环境

永久的
vim /etc/profile
在# path里添加
PATH=$PATH:/root
临时的
export PATH=$PATH:/root

echo 输出颜色

在这里插入图片描述

可以改变数字调节颜色

重定向

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存得到指定的文件(覆盖原有内容)
重定向输出>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定文件(覆盖原有内容)
标准错误输出2>>将错误信息追加到指定文件中
混合输出&>将标准输出、标准错误的内容保存到同一个文件中

在这里插入图片描述

在这里插入图片描述
2>能够接受错误的信息 >只能接受正确的信息

要想两个都接受只能
在这里插入图片描述

输入黑洞

ls xxx file.sh &>/dev/null 

位置变量

在这里插入图片描述

在这里插入图片描述
$0 代表脚本名本身
$1 是脚本后第一个参数
$2 是脚本后第二个参数
以此类推…

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

在这里插入图片描述
*$会把输出的内容当成一个整体,比如:touch KaTeX parse error: Undefined control sequence: \* at position 1: \̲*̲会创造一个整体文件名文件,而不…@会把输出的内容以单个形式输出,比如:touch $@会创造多个文件

运算

expr

expr 1 + 1 
expr 1+1
expr 2 \* 3    expr乘以需要反斜杠
expr 2 / 3    只显示整数部分
expr 4 % 3   取余数

在这里插入图片描述
在这里插入图片描述
也可引用变量
在这里插入图片描述
注意事项:注意空格 格式

$[ ]、$(( ))

echo $[1+2]
echo $[2*3]
echo $[2/2]
echo $[2%2]
echo $[2**8]  算2 的8次方
echo "2^8"  | bc   算2的8次方

引用变量

echo $[$a+$b]
echo $[a+b]
echo $[a-b]
echo $[a*b]
echo $[a/b]
echo $[a%b]
 
echo $((1+2))
echo $((2*3))
echo $((4-7))  可以显示负整数
echo $((a+b))
echo $((a*b))
echo $((a%b))

let

需要echo输出答案

let a++
let a--   
let ++a
let a=2**8  赋予a   2的8次方

++a 先加后执行
a++ 先执行后加

bc

bc
1.1+2.1  可以显示小数 
quit  退出bc
echo "1.1+2.1" | bc
3.2
echo "scale=3;10/3" | bc     scale规定输出几位(只能运用于乘除 ,不可应用于加减)

echo $[3**2]   算2的二次方
echo $[3**3]   算2的三次方
echo $[3**8]   算2的8次方
echo "2^8"  | bc   算2的8次方
bc  不支持**,支持^

根据输入的半径求圆的面积
在这里插入图片描述
**注意事项""只能在前面算式中,不可越过管道符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值