Shell概述 、 编写及执行脚本 、 Shell变量 、 数值运算
什么是Shell
查看系统的解释器
cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
查看当前终端的解释器
pstree 本机登录 查找terminal 远程登录 查找ssh - 安装 解释器 yum -y install ksh ksh 切换成ksh解释器 不能tab补全 不能上下键 左右键
bash的优点
tab键 历史命令 alias 管道 重定向 快捷键
编写及执行脚本
重定向
1> 正确的信息 2> 错误的信息 &> 全部信息 shell脚本增加工作效率
编写脚本的规范
1、声明解释器 2、注释 可以说明此脚本的功能,变量的功能 3、执行指令
#!/bin/bash # 这是个测试脚本 echo abc
编写脚本
vim test01.sh #!/bin/bash # test echo 123
赋予脚本可执行权限
chmod a+x ./test01.sh
执行脚本
第一种 ./test01.sh(需执行权限) 第二种 bash ./test01.sh (此方式 无需执行权限)会产生子进程 这种退出 退出的是子进程的bash退出 当前 终端不会退出 第三种 source命令(或者. ) 使用当前解释器执行脚本(此方式 无需执行权限) source ./test01.sh 这种退出 当前终端会退出 . ./test01.sh
编写一个脚本 生成yum仓库
yumrepo.sh
#!/bin/bash # 自动配置yum仓库 mkdir /opt/yum.repo.bak mv /etc/yum.repos.d/* /opt/yum.repo.bak echo "[reponame] name=descri baseurl=file:///dvd enabled=1 gpgcheck=0" > /etc/yum.repos.d/haha.repo
编写一个脚本 安装ftp服务
ftp.sh
#!/bin/bash # 自动安装ftp服务 yum -y install vsftpd &> /dev/null systemctl restart vsftpd systemctl enable vsftpd
Shell变量
变量 常量
变量种类
- 1、自定义变量 不能以数字开头 等号两边不能有空格 a=10 使用变量 $a echo $a echo ${a}RMB unset a 取消变量 - 2、环境变量 $USER 用户名root $UID 用户ID $SHELL 解释器 $HOME 家目录 $PWD 当前位置 $PATH 类似window的path 记录命令执行的路径 $PS1 1级提示符 [root@A ~] $PS2 2级提示符 \ + Enter 可以看见,命令继续输入 > $HOSTNAME 主机名 $RANDOM 随机数 - 3、预定义变量与位置变量 预定义变量 $0 脚本名称 $# 参数总数 $* 所有参数 $$ 当前进程的进程号 $? 上一个程序的返回状态码 0 成功 非零失败 位置变量 $1 第一个参数 $2 $3 $4..
编写一个创建账号 设置密码的脚本
bash userad.sh xyz1 123
#!/bin/bash # add user set password useradd $1 echo "$2" | passwd --stdin $1
-
env 查看大部分环境变量
-
set 查看所有变量
变量的扩展应用
- 1、引号 "" 双引号 界定范围 '' 单引号 界定范围 屏蔽特殊符号 `` 或者$() 反撇号 调用命令的执行结果 a=`date` a=$(date)
read指令
#!/bin/bash # add user set password read -p "请输入用户名:" n useradd $n stty -echo read -p "请输入密码:" p stty echo echo echo "$p" | passwd --stdin $n
屏蔽输入回显 stty -echo 恢复输入回显 stty echo echo 自带换行效果
export 全局变量
a=10 局部变量 子进程读不到 export a 发布全局变量 子进程就能读到了 export b=20 创建与发布 export -n a 取消全局,恢复局部效果(谁取消的,他下一级用不了)
数值运算
加 减 乘 除 求模(取余数)
1、expr
expr 1 + 1 2 expr 2 - 1 1 expr 2 '*' 2 4 expr 2 \* 2 4 expr 4 / 2 2 expr 5 % 3 2
2、$[] 或者 $(())
echo $[1+1] echo $[2-1] echo $[2*2] echo $[2/2] echo $[3%2] echo $[((3%2))]
运算支持变量
a=10 b=20 expr $a + $b echo $[a+b]
3、let 运算结果不显示 通常用于创建变量
let c=a+b echo $c let c-- let c++ let c-=3 let c+=3
4、小数 计算 bc
bc 5/3 scale=3
非交互
echo 'scale=3;10/3' | bc
点赞
评论