2/9(shell编写与执行、变量)

shell

cat /etc/redhat-release #查看虚拟机版本
yum repolist #查看yum
cat pg.01 #查看脚本内容

用户root—bash—sh—ls

1.shell的使用方法
交互式----------命令行
非交互式------脚本

[root@svr7 ~]# cat /etc/shells //查看所有解释器
[root@svr7 ~]# sh //切换成sh解释器
sh-4.2# ls //利用sh解释器输入命令
sh-4.2#exit //退出sh解释器
[root@svr7 ~]#yum -y install ksh //安装新解释器
[root@svr7 ~]#ksh //进入新解释器

ksh:
用户root—bash—ksh—ls
不支持tab键、历史命令、上下左右键

bash:
用户root—bash—ls
支持tab键、快捷键、历史命令、别名、管道、重定向

2.shell脚本编写规范
1)声明解释器 #!/bin/bash
2)编写注释 #可以描述脚本功能、变量作用等信息
3)执行指令 ls cd …

3.脚本的执行方式
1)为脚本添加x权限,使用相对或者绝对路径执行
chmod u+x test01.sh
./test01.sh 或者 /opt/test01.sh
用户(root)—bash—bash(执行完后,会自动退出)
2)使用解释器程序执行脚本,无需x权限
bash test01.sh #指定bash来执行
用户(root)—bash—bash(自己在命令行敲的) 会开启新的子进程
3)使用source命令执行脚本,无需x权限
source test01.sh #直接调用当前解释器来执行
用户(root)—bash 不会开启新的子进程

查看开了几个bash:pstree | grep bash

4.编写脚本,搭yum
在这里插入图片描述

5.编写脚本,安装网站,浏览网站时显示“web-test~~”
在这里插入图片描述
执行—>curl 192.168.4.7

6.安装脚本,安装ftp开启服务并设置开机自启
在这里插入图片描述
yum -y install vsftpd &> /dev/null //将不需要的信息扔黑洞
> 重定向标准输出
2> 重定向错误输出
&> 重定向所有输出

shell总结
1.声明解释器
2.注释
3.执行指令

执行脚本:
1.加x权限
2.使用解释器
3.使用source命令

变量

1.自定义变量(数字、字母、下划线、不能数字开头)(变量名称=值)
a=10
a=10 #创建变量(对变量赋值),名字是a,值是10
a=30 #再次赋值,之前的会被覆盖
echo KaTeX parse error: Expected 'EOF', got '#' at position 4: a #̲调用变量时使用符号
unset a #取消变量的定义
a= #将变量a赋值为空,效果同上
echo ${a}RMB #变量名容易与后续字符发生混淆时使用大括号隔开

2.环境变量,由系统定义好,直接调用
USER 当前用户名 UID当前用户的id号 HOME当前用户家目录
HOSTNAME 主机名 SHELL当前用户的解释器 PWD当前位置
PATH 存储命令的路径 PS1 一级提示符 PS2 二级提示符

3.位置变量与预定义变量
$1 执行脚本时后面第1个位置参数
$2 执行脚本时后面第2个位置参数
$3 执行脚本时后面第3个位置参数
$* 执行脚本时后面所有位置参数
$# 执行脚本时后面位置参数的个数
$$ 随机进程号
$? 判断上一条指令是否执行成功,0是成功,非0是失败

编写脚本,创建用户tom,配置密码123456

非交互式配密码:echo “123456” | passwd --stdin tom
在这里插入图片描述

env 查看所有环境变量
env | grep HOSTNAME

set 查看所有变量
set | grep 22

变量拓展

1.引号和反撇号
" " 双引号 界定范围
a=10
echo "KaTeX parse error: Double superscript at position 18: … //正常调用变量 ' '̲ 单引号 界定范围 屏蔽…a’ //无法调用变量,$被屏蔽

反撇号 获取命令的执行结果,还可以使用 ( ) 实 现 相 同 效 果 a = d a t e / / 仅 仅 将 四 个 字 母 赋 值 给 a a = ‘ d a t e ‘ / / 将 d a t e 执 行 结 果 赋 值 给 a a = ( )实现相同效果 a=date //仅仅将四个字母赋值给a a=`date` //将date执行结果赋值给a a= ()a=date//aa=date//dateaa=(date) //效果同上

2.使用read指令

read -p “请输入用户名” u #-p是可以定义提示信息,u相当于自定义变量名称,可以存储用户看到提示信息后输入的字符

1)屏蔽回显:stty -echo
2)恢复回显:stty echo

3.使用export发布全局变量
全局变量:仅在当前解释器进程中使用的变量
局部变量:解释器产生的子进程中也可以使用的变量

全局变量:
a=10 //创建变量
export a //将已有变量发布为全局效果
export b=20 //创建变量的同时发布为全局效果

局部变量:
export -n b //将全局变量恢复为局部变量

注意,测试时要在父进程创建变量,然后可以执行bash进入
子进程测试效果,如果要返回父进程要执行exit指令

变量总结
1.自定义变量 (数字、字母、下划线)
变量名称=值
2.环境变量
UID USER HOME HOSTNAME PATH SHELL PWD PS1 PS2
3.位置变量、预定义变量
$1 $2 $3 $* $# $$ $?
read -p “请输入用户名” u #-p定义提示信息
stty -echo 屏蔽回显
stty echo 恢复回显

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值