SHELL脚本编程: Shell概述 、 编写及执行脚本和Shell变量 、 数值运算(SHELL----DAY27)

shell脚本

cat /etc/shells  查看本机所有解释器
yum -y install ksh   安装新解释器

bash的优点
tab键,快捷键, 别名,历史命令,管道,重定向

-----------------------------------------------------
编写shell脚本规范
1,声明解释器
    #!/bin/bash
2,注释,可以说明脚本功能, 变量的作用等
3,执行代码

#!/bin/bash
#这是一个测试脚本
echo abc
chmod +x test01.sh
使用绝对路径或者相对路径

脚本的执行方式:
1, +x权限
/opt/test01.sh
2, 直接使用解释器执行, 使用新解释器(开启子进程)执行脚本命令
bash test01.sh
3,使用source(或者.)命令执行,使用当前解释器(不开启子进程)执行脚本命令
source test01.sh

pstree  查看程序的进程树
--------------------------------------------------------------------------------
编写部署yum仓库的脚本:
#!/bin/bash
#部署yum
url=http://content.example.com/rhel7.0/x86_64/dvd
rm -rf /etc/yum.repos.d/*.repo
echo "[abc]
name=abc
baseurl=$url
enabled=1
gpgcheck=0" > /etc/yum.repos.d/abc.repo

bash test02.sh  编写完后执行脚本
yum repolist  检查结果
---------------------------------------------------------------------------
编写部署ftp服务脚本:
#!/bin/bash
yum -y install vsftpd &> /dev/null
systemctl restart vsftpd
systemctl enable vsftpd

bash test03.sh  执行
systemctl status vsftpd   检查服务状态
--------------------------------------------------------------------------
常量  固定不变
变量  灵活多变,脚本多使用变量可以增加性能
变量的种类:
1,自定义变量
    变量名称=变量的值  定义变量值的过程叫赋值,名称的定义可以用大小写字母,数字,下划线,不能以数字开头,不能使用特殊符号

a=20   定义变量
echo $a  调用变量
a1=20
1a=20   定义失败
a_1=20  
a$=20   定义失败
a=40     
echo $a   
echo $aRMB   容易混淆
echo ${a}RMB    加大括号间隔

2,环境变量
UID当前用户的ID号  USER当前用户名  SHELL当前用户的解释器  HOSTNAME主机名   HOME当前用户的家目录  PWD所在目录位置   PATH存放命令的路径  PS1一级提示符  PS2二级提示符

3,位置变量与预定义变量
$1 $2 $3 ......
$0 $# $* $$ $?
#!/bin/bash
echo $1   显示脚本后的第1个参数
echo $2   显示脚本后的第2个参数
echo $3   显示脚本后的第3个参数
echo $0   显示脚本执行名称
echo $#      显示参数的个数
echo $*   显示所有参数
echo $$   显示进程号
echo $?      判断上一条指令是否执行成功,0是成功,非0是失败

------------------------------------------------------------
编写创建用户并配置密码的脚本:
创建用户xyz 配置密码123
#!/bin/bash
useradd xyz
echo 123 |passwd --stdin xyz

改良版
#!/bin/bash
useradd $1
echo $2 |passwd --stdin $1

bash test05.sh xyz1 321    测试效果,创建xyz1,密码321
------------------------------------------------------------
变量的扩展应用
一:
1, ""  界定范围
2, ''   界定范围,屏蔽特殊符号
3, ``  反撇号,可以获取命令执行结果
    $( )  可以实现相同效果

touch a b   创建2个文件
touch "a b"   创建1个文件
touch 'x y'   创建1个文件
a=10
echo "$a"   看变量的值    
echo '$a'   输出字符$a
a=date     把4个字母赋值给a
a=`date`    将date执行结果赋值给a
echo $a     查看

二:
将脚本设置为交互式, 可以从用户获取变量的值
read -p "提示信息"  变量名
再次改良
#!/bin/bash
read -p "请输入一个用户名"   u
useradd $u
stty -echo
read -p "请输入一个密码"   p
stty echo
echo $p |passwd --stdin $u

stty -echo  屏蔽回显
stty echo    恢复回显
三:
a=10          局部变量
HOSTNAME    全局变量

export a    将a发布为全局
bash   开启新解释器
echo $a   依然可以使用该变量
exit
export b=20  创建+发布b为全局变量
bash
echo $b
exit
export -n b  取消变量b的全局状态,恢复为局部变量

env 查看所有常用环境变量
set 查看所有变量
-----------------------------------------------------------------------------------------
shell中的运算
方法一:
expr 1 + 1        加
expr 2 - 1        减
expr 2 \* 2     乘  \转义符号    屏蔽之后一个字符的特殊含义
expr 2 / 2        除
expr 5 % 2      求模(取余数)

a=10
b=20
expr $a + $b   支持变量的运算
expr $a + $a
expr $a + 100

方法二:
echo $[1+1]
echo $[1-1]
echo $[2*2]
echo $[2/2]
echo $[10%2]
echo $[a+a]
echo $[a-a]
echo $[b-a]
echo $[b%a]

方法三:
let  运算结果不显示, 通常用于使用运算结果定义变量的值,或者对变量进行自增减

定义变量:
let a=1+1
对变量进行自增减:
 常规写法         主流写法
let a=a+1       let a++    
let a=a-1        let a--
let a=a+2        let a+=2
let a=a+b        let a+=b
let a=a*b        let a*=b

方法四: bc计算器,可以计算小数
echo 1.1+1 |bc   非交互式使用
echo 10/3 |bc
echo "scale=3;10/3" |bc   定义小数点后长度并运算

发布了55 篇原创文章 · 获赞 0 · 访问量 412

猜你喜欢

转载自blog.csdn.net/weixin_45533230/article/details/104201093