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-------拷贝、解压、安装