Shell概述 、 编写及执行脚本 、 Shell变量 、 数值运算

Shell概述

什么是Shell 在linux内核与用户之间的解释器程序,通常指的是bash,负责向内核翻译及传达用户/程序指令

查看系统的解释器

 

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

评论