shell day2

while循环

while [ 条件 ]
do
命令
done

例:求1-100的和

#!/bin/bash
i=1
sum=0
while [ "$i" -le 100 ]
do
	sum=$(($sum+$i))
	((i++))
done
echo $sum

函数
定义:函数名(){
代码
}
函数调用
格式:函数名
函数的参数
使用$n接收数据

#!/bin/bash
#定义函数
hello(){
	echo "helloworld"
}
#先定义再调用
hello

传参

#!/bin/bash
add(){
	echo "$1"
	echo "$2"
}
#调用
add 1 100

两数求和

#!/bin/bash
#定义函数
add(){
	s=$(($1+$2))
	echo $s
}
read -p "请输入第一个数:" num1
read -p "请输入第二个数:" num2
#调用
add num1 num2

函数的返回值

#!/bin/bash
#定义函数
hello(){
	echo "helloworld"
}
#先定义再调用
hello
#查看函数的返回值
echo $?

练习:输入一个目录,判断目录是否存在,如果不存在则给出提示,如果存在则提示输入要创建的文件名,判断创建的文件是否存在,如果不存在,则继续创建,否则提示文件已经存在
流程图

#!/bin/bash
createfile(){
	#进入目录
	cd $1
	#提示用户输入文件名
	read -p '请输入文件' filename
	#判断文件是否存在
	if [ -f '$filename' ]
	then
		echo "该文件已存在"
	else
		echo "文件不存在"
		echo "开始创建文件。。。。"
		touch $filename
		echo "文件创建成功"
	fi
}
#提示用户输入目录
read -p "请输入目录" dir
if [ -d "$dir" ]
then
	#调用创建文件函数
	createfile $dir
else
	echo "文件目录不存在"
fi

自动化部署

使用的本地操作系统是[Windows 2000 Server],使用的虚拟机是[VMware-workstation-5.5.2-29772.exe]使用的 Linux 企业版是[红 帽企业级 Linux.AS 版].V4.0],使用的 Oracle 版本是[Oracle 10g]。安装前请确认如下事宜:
·当前 Linxu 使用的是企业版,并且安装了[开发工具]工具包;
·当前 Linux 系统已经配置好了网络设置;
·已经准备好了 Oracle 安装文件;
·有足够的硬盘空间用于安装;
·有足够的物理内存和分配内存便于安装;
下面提供的是一组需要的资源参考:
·至少 1024 MB 物理内存
·1024-2048 需 1.5 倍的交互空间
·2048-8192 需 1 倍的交互空间
·8192- 需 0.75 倍的交互空间
·至少 400 MB /tmp 临时目录空间
·oracle 软件需要 1.5 GB 到 3.5 GB 磁盘空间
·默认数据库需要 1.2 GB
cut—剪取
按照字节进行剪取 -b

/etc/passwd文件
head -5 passwd|cut -b 1-4	截取1-4的字节
head -5 passwd|cut -b 4		截取第四个字节
head -5 passwd|cut -b -4	截取1-4的字节
head -5 passwd|cut -b 4		从第四个字节开始截取
head -5 passwd|cut -b 1-2,4	截取第一第二第四个字节
pwd|cut -3,3-	剪取相同的内容会去重
注意:一个空格一个字节,一个字母一个字节,一个汉字三个字节

按照字符进行剪取 -c

注意:一个汉字一个字符,一个空格一个字符
pwd|cut -c 1-2	剪取1-2两个字符

按照域进行剪取
剪取的分隔符 -d
-f :取的域的位置

vi passwd
head -5 passwd|cut -d ":" -f 1	按照:截取第一个域

确定当前登录的是超级管理员 root 用户,如下内容都是在 root 下面进行的操作。
依 次执行命令:
[groupadd dba]----------------------------------------新建管理组
[groupadd oinstall]------------------------------------新建安装组
[useradd tester -g oinstall -G dba]----------新建用户,用户录属于 dba 和 oinstall [passwd tester]------------------------------------------修改用户密码

继续利用 root 用户建立安装目录并分配权限。分别执行如下命令
[mkdir -p /oracle/product/10.2.0/db_1]-----------------------------------新建 oracle 安装目录 [chown -R tester.oinstall /oracle]---------修改 oracle 安装目录属主和属组
[chmod 755 -R /oracle]--------------------修改 oracle 安装目录操作权限
注销当前 root 用户(建议注销,不用 su 命令置换),再用刚才新建的 tester 用户登录 系统。进入当前用户的根目录执行命令[vi ./.bash_profile],打开用户环境变量列表,插入 如下内容:
ORACLE_BASE=/oracle
ORACLE_HOME= O R A C L E B A S E / p r o d u c t / 10.2.0 / d b 1 O R A C L E S I D = o r c l P A T H = ORACLE_BASE/product/10.2.0/db_1 ORACLE_SID=orcl PATH= ORACLEBASE/product/10.2.0/db1ORACLESID=orclPATH=PATH: H O M E / b i n : HOME/bin: HOME/bin:ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_BASE
export ORACLE_HOME
export ORACLE_SID
export PATH
export LD_LIBRARY_PATH
进入文件后,单击[i],开始修改,修改完成后保存退出(ESC—冒号—wq),执行命 令[source ./.bash_profile],使修改生效,此时你可以利用命令[echo $ORACLE_BASE]或 [echo $PATH]命令查看刚才的设置内容

#!/bin/bash
#定义函数
editenv(){
	#进入tester的根目录下
	cd /home/tester
	#向文件中插入内容
	sed -i '10aORACLE_BASE=/oracle' .bash_profile
	sed -i '11aORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1' .bash_profile
	sed -i '12aORACLE_SID=orcl' .bash_profile
	sed -i '13aPATH=$PATH:$HOME/bin:$ORACLE_HOME/bin' .bash_profile
	sed -i '14aLD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib' .bash_profile
	sed -i '15aexport ORACLE_BASE' .bash_profile
	sed -i '16aexport ORACLE_HOME' .bash_profile
	sed -i '17aexport ORACLE_SID' .bash_profile
	sed -i '18aexport PATH' .bash_profile
	sed -i '19aexport LD_LIBRARY_PATH' .bash_profile
	#更新文件
	source ./.bash_profile
	#判断
	if[ '$ORACLE_BASE' == '/oracle' ]
	then
		echo "环境变量配置成功"
	else
		echo "环境变量配置失败"
	fi
 

}
#定义函数
createdir(){
	#新建目录
	mydir='/oracle/product/10.2.0/db_1'
	mkdir -p $dir
	if [ -d '$mydir']
	then
		echo "目录创建成功" 1>>/data/lesson2/a.txt
		#修改目录属主和属组
		chown  -R  tester.oinstall  /oracle
		#修改目录操作权限
		chmod  755  -R  /oracle
		#调用editenv函数
		editenv
		
	else
		echo "目录创建失败" 2>>/data/lesson2/b.txt
	fi
	
}
#定义函数createuser
createuser(){
	#创建一个叫tester的用户
	useradd tester -g oinstall -G dba
	#用户创建成功后会添加到/etc/passwd文件中
	finduser="grep "tester" /etc/group|cut -d ':' -f 1"
	if [ '$finduser' == 'tester' ]
	then
		echo "创建用户成功"
		#修改用户密码
		passwd tester
		#调用函数
		createdir
	else
		echo "创建失败"
	fi
}
#定义函数
creategroup(){
	#创建管理组
	groupadd dba
	finddba="grep "dba" /etc/group|cut -d ':' -f 1"
	#判断管理组是否存在
	if [ "$finddba" == "dba" ]
	then
		echo "管理组创建成功"
		#创建安装组
		groupadd oinstall
		#查找组并定义变量
		findoin="grep 'oinstall' /etc/group|cut -d ':' -f 1"
		#判断
		if[ '$findoin' == 'oinstall' ]
		then
			echo "安装组创建成功"
			#调用createuser函数
			createuser
		else
			echo "安装组创建失败"
		fi
	else
		echo "创建失败"
	fi
	
	
}
#判断当前用户是否为root--->$USER
if [ "$USRER" == "root" ]
then
	echo "当前用户是root"
	#调用函数
	creategroup
else
	echo "当前用户不是root"
fi

安装oracle

注销系统,用 tester 用户登录系统(注意如果上一步没有注销,这一步一定要注销, 要是你当前桌面显示[tester 的主目录]),找到 Oracle 安装文件,比如我的是放在/tmp 下的 zip文件,所以首先解压缩:
解压缩完成,会生成一个 database 的文件夹,进入 database 目录下会看到一个可执 行文件 runInstaller,执行命令[./runInstaller],安装开始:

#!/bin/bash
#定义函数
install(){
	#进入tmp目录,即安装包目录
	cd /tmp
	#
	my_file="oracle安装包.zip"
	if [ -f '$my_file' ]
	then
		echo "文件存在"
	else
		echo "文件不存在"
		echo "文件正在copy"
		cp /mnt/hgfs/share/$my_file /tmp
		echo "文件copy成功"
	fi
	#解压
	echo "文件正在解压。。。。"
	unzip $my_file
	echo "文件解压成功"
	#判断文件是否存在
	if [ -d 'database' ]
	then
		echo "文件夹存在"
		#进入文件夹
		cd database
		#执行
		./runInstaller
	else
		echo "文件解压失败"
	fi
}
#判断当前用户是否为tester
if [ "$USER" == "tester"]
then
	echo "当前用户为tester"
	#调用install函数
	install
else
	echo "当前用户不是tester"
fi

总结:

部署准备
1.判断用户是否为root
2.创建管理组,安装组函数
3.创建tester用户函数
4.创建目录函数
5.创建、修改环境变量函数
部署
1.判断用户是否为tester
2.创建安装函数installer-------拷贝、解压、安装

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值