北京联银通科技有限公司
Shell编程培训文档
初稿
软件事业三部项目实施部
作为公司内部员工培训文档。主要内容包括Linux基本命令的介绍,Shell编程,
以及shell与oracle数据库的交互。
版本记录
版本编号版本日期修改者说明文件名
V1.02012-12-13傅作魁初版Shell编程培训文档
目录
一、Linux的目录结构4
1.1Linux目录结构的简单介绍4
1.2Linux的文件类型4
二、Linux基础命令的使用4
2.1注销,关机,重启4
2.2文件与目录的操作4
2.3打包、压缩与解压缩6
2.4在后台运行程序7
2.5任务调度命令8
2.6删除调度工作任务8
2.7其他常用命令8
三、Shell编程9
3.1编写/修改权限及执行Shell程序9
3.2在Shell程序中使用的参数10
3.3在Shell程序中的使用变量10
3.4表达式的比较11
3.5循环结构语句13
3.6条件结构语句14
3.7在Shell脚本中使用函数16
3.8在Shell脚本中调用其他脚本16
四、Shell与oracle数据库的交互17
4.1shell向库表中新增数据17
4.2shell删除库表中的数据17
4.3shell修改库表中的数据18
4.4shell查询库表中的数据19
一、Linux的目录结构
1.1Linux目录结构的简单介绍
/:linux文件系统的最顶端是/,称为linux的root,所有的目录、文件、
设备都在/之下。
/home:普通用户目录默认存放目录。
/lib:库文件存放目录。
/usr:这个是系统存放程序的目录,比如命令、帮助文件等。
/bin:存放系统所需要的那些命令,比如ls、cp、mkdir等命令;功能和
/usr/bin类似,这个目录中的文件都是可执行的、普通用户可以使用的命令。
/boot:这是Linux的内核及引导系统程序所需要的文件目录。
/dev:设备文件存储目录,比如声卡、磁盘。
/etc:系统配置文件的所在,一些服务器的配置文件也在这里;比如用户帐
号及密码配置文件。
/tmp:临时文件目录,有时用户运行程序的时候,会产生临时文件。
/var:这个目录的内容是经常变动的,/var下有/var/log这是用来存放系统
日志的目录。/var/lib用来存放一些库文件,比如MySQL的。
/media:本目录是空的,是用于挂载的。
/srv:一些服务需要访问的文件存放在这。
/sys:系统的核心文件。
1.2Linux的文件类型
linux有四种基本文件系统类型:普通文件、目录文件、链接文件和特殊文
件。可以用file命令来识别。
1.2.1普通文件
如文本文件、c语言源代码、shell脚本等,可以用cat、less、more、vi等
来察看内容,用mv来改名。
1.2.2目录文件
包括文件名、子目录名及其指针。可以用ls列出目录文件。
1.2.3链接文件
是指向一索引节点的那些目录条目,用ls来查看时,链接文件的标志用l开
头,而文件后以"->"指向所链接的文件。
1.2.4特殊文件
如磁盘、终端、打印机等都在文件系统中表示出来,常放在/etc目录内。例
如:软驱A称为/dev/fd0,/dev/had来自第一硬盘。
二、Linux基础命令的使用
2.1注销,关机,重启
2.1.1注销系统的logout命令
Logout注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接
下达logout命令即可:
[root@localhostroot]#logout
RedHatLinuxrelea9(Shike)
Kernel2.4.20.8onani686
Login:
2.1.2关机或重新启动的shutdown命令
Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。
参数说明如下:
立即关机:-h参数让系统立即关机。范例如下:
[root@localhostroot]#shutdown–hnow
指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown
命令,范例如下:
[root@localhostroot]#shutdown+55分钟后关机
[root@localhostroot]#shutdown10:30在10:30时关机
关机后自动重启:-r参数设置关机后重新启动。范例如下:
[root@localhostroot]#shutdown-rnow立刻关闭系统并重启
[root@localhostroot]#shutdown-r23:59指定在23:59时重启动
2.1.3重新启动计算机的reboot命令
顾名思义,reboot命令是用来重新启动系统的。虽然reboot命令有参数可
以使用,但是一般只需要单独运行reboot命令就可以了。
[root@localhostroot]#reboot
2.2文件与目录的操作
2.2.1列出文件列表的ls命令
ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列
表。配合参数的使用,能以不同的方式显示目录内容。范例如下:
显示当前目录的内容:
[tony@freetony]$ls
当运行ls命令时,并不会显示名称以“.”开头的文件。因此可加上“-a”
参数指定要列出这些文件。范例如下:
[tony@freetony]$ls–a
“-l”参数用于以列表的形式,显示文件的详细信息。范例如下:
[tony@freetony]$ls-l
以“-s”参数显示每个文件所有的空间,并以“-S”参数指定按所有占用空
间的大小排序。范例如下:
[tony@freetony]$ls–s–S
在ls命令后直接加上欲显示的目录路径,就会列出该目录的内容。范例如下:
[tony@freetony]$ls/usr/games
2.2.2切换目录的cd命令
cd(changedirectory)命令可让用户切当前所在的目录。范例如下:
[tony@freehome]$cdtony切换到当前目录下的tony子目录
[tony@freetony]$cd..切换到上一层目录
[tony@freehome]$cd/切换到系统根目录
[tony@free/]$cd切换到用户主目录
[tony@freetony]$cd/usr/bin切换到/usr/bin目录
2.2.3创建目录的mkdir命令
mkdir(makedirectory)命令可用来创建子目录。
[tony@freetony]$mkdirtool在所在目录下创建tool子目录
2.2.4删除目录的rmdir命令
rmdir(removedirectory)命令可用来删除“空”的子目录。范例如下:
[tony@freetony]$rmdirtool删除tool目录
2.2.5复制文件的cp命令
cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令将一个文
件复制成另一个文件或复制到某个目录时,需要指定原始文件名与目的文件名或目
录。范例如下:
[tony@freetony]$将复制成
[tony@freetony]$/tmp/data将data3复制到/tmp/data目录中
显示复制过程:加入-v参数可显示命令执行过程。范例如下:
[tony@freetony]$一般状态下不会显示复制过程
[tony@freetony]$cp–以-v显示复制过程
递归复制:加入“-R”参数可同时复制目录下的所有文件及子目录。范例如下:
[tony@freetony]$cp–v–R*backup将所有文件(含子目录文件)复制到
backup目录
2.2.6删除文件或目录的rm命令
rm(remove)命令可以删除文件或目录。范例如下:
[tony@freetony]$rmmyfile删除指定的文件
[tony@freetony]$rm*删除当前目录中的所有文件
rm命令的常用参数如下:
强迫删除:使用-f参数时,rm命令会直接删除文件,不再询问。范例如下:
[tony@freetony]$rm–f*.txt强迫删除文件
递归删除:-r也是一个相当常用的参数,使用此参数可同时删除指定目录下
的所有文件及子目录。范例如下:
[tony@freetony]$rm–rdata删除data目录(含data目录下所有文件和子目
录)
[tony@freetony]$rm–r*删除所有文件(含当前目录所有文件,所有子目录和
子目录下的文件)
强制删除指定目录:当使用-r参数删除目录时,若该目录下有许多子目录及
文件,则系统会不间断地询问,以确认您的确要删除目录或文件。若已确定要删除
所存目录及文件,则可以使用-rf参数,如此一来,系统将直接删除该目录中所有
的文件及子目录,不再询问。范例如下:
[tony@freetony]$rm–rftmp强制删除tmp目录及该目录下所有文件及子目录
显示删除过程:使用-v参数。范例如下:
[tony@freetony]$rm–v
2.2.7让显示画面暂停的more命令
为了避免画面显示瞬间就闪过去,用户可以使用more命令,让画面在显示满
一页时暂停,此时可按空格键继续显示下一个画面,或按Q键停止显示。
当使用ls命令查看文件列表时,若文件太多则可以配合more命令使用。范
例如下:
[tony@freebin]$ls–almore-a后的|是管道(竖线)
单独使用more命令时,可用来显示文字文件的内容。范例如下:
[tony@freetony]$
2.2.8连接文件的cat命令
cat(concatenate)命令可以显示文件的内容(经常和more命令搭配使用),
或是将数个文件合并成一个文件。范例如下:
[tony@freetony]$|more逐页显示的内容
[tony@freetony]$>>将附加到
文件之后
[tony@freetony]$>将和
合并成文件
2.2.9移动或更换文件,目录名称的mv命令
mv(move)命令可以将文件及目录移动到另一个目录下面,或更换文件及目录
的名称。范例如下:
[tony@freebackup]$..将文件移到上层目录
[tony@freebackup]$将改名成
[tony@freebackup]$cd..切换到上一层目录
[tony@freetony]$mvbackup..backup目录上移一层
2.2.10显示当前所在目录的pwd命令
pwd(printworkingdirectory)命令可显示用户当前所在的目录。范例如下:
[tony@freetony]$pwd
2.2.11搜索字符串得grep命令
grep命令可以搜索特定字符串并显示出来,一般用来过滤先前得结果,避免
显示太多不必要得信息。范例如下:
[tony@freeetc]$greptext*.conf搜索当前目录中扩展名为.conf且包含
“text”字符串得文件
若使用一般权限的用户运行,上例的输出结果会包含很多如“权限不够”之
类的错误信息,可使用-s参数消除:
[tony@freeetc]$grep–stext*.conf
2.2.12重导与管道
重导(redirect)可将某命令的结果输出到文件中,它有两种命令:“>”和
“>>”。“>”可将结果输出到文件中,该文件原有的内容会被删除;“>>”则将
结果附加到文件中,原文件内容不会被清除。范例如下:
[tony@freetony]$ls–a>将ls–a命令执行结果输出到文件
[tony@freetony]$>>将内容附加到
文件之后
通道(pipe)命令的符号是“|”,可将某命令的结果输出给另一命令,以下范
例将ls命令的输出结果传给grep命令过滤:
[tony@freeetc]$ls|gerpconf搜索并显示ls命令运行结果中包含有“conf”
字符串
再举一个删除文件或目录的例子,可以利用yes命令重复输出“y”字符的特
性,将结果传给rm命令,如此即可避免重复输入“y”:
[tony@freetony]$yes|rm–rmydir
2.3打包、压缩与解压缩
2.3.1打包文件的tar命令
tar命令位于/bin目录中,它能将用户所指定的文件或目录打包成一个文
件,不过它并不做压缩。一般Unix上常用的压缩方式是先用tar命令将许多文件
打包成一个文件,再以gzip等压缩命令压缩文件。tar命令参数繁多,以下举例
常用参数作说明:
-c:创建一个新的tar文件;
-v:显示运作过程信息;
-f:指定文件名称;
-z:调用gzip压缩命令执行压缩;
-j:调用bzip2压缩命令执行压缩;
-t:参看压缩文件内容;
-x:解开tar文件。
[tony@freedata]#*将目录下所有文件打包成
[tony@freedata]#*将目录所有文件打包成再
用gzip命令压缩
[tony@freedata]#*查看文件中包括了哪些文件
[tony@freedata]#*将解开
2.3.2压缩与解压缩
tar命令本身没有压缩能力,但是可以在产生的tar文件后,立即使用其他
压缩命令来压缩,省去需要输入两次命令的麻烦。
使用-z参数来解开最常见的.文件:
[tony@freedata]#tar–将文件解开至当前目录下
使用-j参数解开2压缩文件
[tony@freedata]#tar–2将文件解开至当前目录下
使用-Z参数指定以compress命令压缩
[tony@freedata]#tar–.Z*.tif将该目录下所有.tif打包
并命令压缩成.tar.Z文件
2.4在后台运行程序
用户有时的程序有可能要花费很多时间,如果将它放在前台运行,将导致无
法继续做其他事情,最好的方法就是将它放在后台运行,甚至可能希望在用户注销
系统后,程序还可以继续运行。
2.4.1在后台运行程序的&、bg命令
将程序放到后台运行的最简单方法就是在命令最后加上“&”,范例如下:
[tony@freeroot]#updatedb&在后台执行locate数据库更新命令
[tony@freeroot]#bg将更新操作放到后台运行
2.4.2前台运行的程序fg命令
如果用户当前已有程序在后台运行,可以输入fg命令,将它从背景中移到前
台运行:
[tony@freeroot]#fg放到前台执行的命令会显示出来
2.4.3在退出后让程序继续运行的nohup命令
此命令可使用户退出系统后,程序继续运行。范例如下:
[tony@freerony]$nohupmyrver&
然后用户就可以退出了,当再次登录的时候,可以用ps–aux命令看到程序
仍在后台中运行。
2.5任务调度命令
计算机有很多程序需要周期性的被运用,对于重复性的工作,不需要每次都
手动运行这些程序。可利用任务调度命令,指定系统定期在某个时间运行这些程
序,轻松完成想要执行的工作。
一般用户可利用crontab命令,自行设置要定期执行的工作。每个用户可执
行crontab–e命令,编辑自己的任务调度设置文件,并在此文件加入要定期执行
的工作。以下范例为tony用户编辑的任务调度设置文件:
[tony@freerony]$crontab–e
执行上述命令后,即会进入VI文本编辑器自行编辑任务调度的工作。编辑内
容的格式如下:
MinuteHourDayMonthDayOfWeekCommand
例如:
30221**/count/在每月1号的22点30分自动执行/count/
脚本
2.6删除调度工作任务
如果不想再定期执行任务调动中的工作,则可执行crontab–r命令删除所
有任务调度的工作。范例如下:
[tony@freerony]$crontab–r删除任务调度中的工作
[tony@freerony]$crontab-1再查看一次任务调度中的工作
nocrontabfortony已经没有任何任务调度工作
2.7其他常用命令
Linux可用的命令相当多,在工作中会接触到更多的其他命令。
2.7.1修改密码的passwd命令
passwd(password)命令可让用户变更密码。范例如下:
[tony@freetony]$passwd
Changingpasswordforurtony
Changingpasswordfortony
(current)UNIXpassword:输入原密码
Newpassword:输入新密码
Retypenewpassword在此输入新密码
passwd:allauthenticationtokensupdatedsuccessfully密码修改成功
2.7.2显示与设置时间的date、clock命令
date命令可以显示当前日期时间。范例如下:
[tony@freerony]$date
clock命令也可以显示出系统当前的日期与时间,不过clock命令默认不允
许一般用户执行,请用root账号执行:
[root@freeroot]#clock
如果系统时间不正确要想更改,可以使用date命令来设置时间。用root账
号如下操作:
[root@freeroot]#date09091200将时间设定为9月9日12点00分
centosalias:
只需当前用户使用:
vim~/.bashrc
所有用户使用:
vim/etc/bashrc
添加内容:
aliastest1='ssh192.168.1.1'
修改完毕后需要执行以下代码方可生效:
source~/.bashrc
or
source/etc/bashrc
三、Shell编程
3.1编写/修改权限及执行Shell程序
3.1.1编辑Shell程序
使用vi编辑器编辑一个内容如下的源程序,保存文件名为date,可将其存
放在目录/bin下。
[root@localhostbin]#vidate
#!/bin/sh
echo“Mr.$USER,Todayis:”
echo&date“+%B%d%A”
echo“Wishyoualuckyday!”
3.1.2赋予可执行权限
编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使
用如下命令:
[root@localhostbin]#chmod+xdate
3.1.3执行Shell程序
[root@localhostbin]#./date
,Todayis:
二月06星期二
Wishyoualuckyday!
3.2在Shell程序中使用的参数
3.2.1位置参数
由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数
字,如果为1,即$1。Linux会把输入的命令字符串分段并给每段进行标号,标号
从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程
序的名字,$1表示传递给程序的第一个参数,以此类推。
3.2.2内部参数
上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无,最常用的
内部变量有$0、$#、$?、$*,它们的含义如下。
$0:命令含命令所在的路径。
$#:传递给程序的总的参数数目。
$?:Shell程序在Shell中退出的情况,正常退出返回0,反之为非0值。
$*:传递给程序的所有参数组成的字符串。
3.3在Shell程序中的使用变量
3.3.1变量的赋值
在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声
明。要赋值给一个变量,其格式如下:
变量名=值等号(=)前后没有空格
3.3.2访问变量值
如果要访问变量值,可以在变量前面加一个美元符号“$”,例如:
[root@localhostbin]#a=”Howareyou”
[root@localhostbin]#echo“Hejuestsaid:$a”
Ais:helloworld
一个变量给另一个变量赋值可以写成:
变量2=$变量1
例如:
x=$i
i++可以写成:
i=$i+1
3.3.3键盘读入变量值
在Shell程序设计中,变量的值可以作为字符串从键盘读入,其格式为:
read变量
例如:
[root@localhostbin]#vitest3
#!/bin/sh
echo“pleainputnameofdirectory”
readDIRECTORY
cd$DIRECTORY
ls–l
3.4表达式的比较
3.4.1字符串比较
作用:测试字符串是否相等、长度是否为零,字符串是否为NULL。
常用的字符串操作符如表3-1所示
表3-1常用的字符串操作符
字符串操作符含义及返回值
=比较两个字符串是否相同,相同则为“真”
!=比较两个字符串是否不相同,不同则为“真”
-n比较两个字符串长度是否大于零,若大于零则为“真”
-z比较两个字符串长度是否等于零,若等于零则为“真”
例如:
[root@localhostbin]#vitest5
#!/bin/Bash
readar1
readar2
[“$ar1”=“$ar2”]
echo$?#?保存前一个命令的返回码
注意:”[”后面和”]”前面及等号“=“的前后都应有一个空格
3.4.2数字比较
在BashShell编程中的关系运算有别于其他编程语言,用表3-2中的运算符
用test语句表示大小的比较。
表3-2用test比较的运算符
运算符号含义
-eq相等
-ge大于等于
-le小于等于
-ne不等于
-gt大于
-lt小于
例如:
[root@localhostbin]#vitest7
#!/bin/Bash
readx,y
iftest$x–eq$y
then
echo“$x=$y”
el
echo“$x!=$y”
fi
执行结果:
[root@localhostbin]#./test7
50100
50!=100
[root@localhostbin]#./test7
150150
150=150
3.4.3逻辑操作
在Shell程序设计中的逻辑运算符如表3-3所示。
表3-3Shell中的逻辑运算符
运算符号含义
!反:与一个逻辑值相反的逻辑值
-a与(and):两个逻辑值为“是”返回值为“是”,反之为“否”
-o或(or):两个逻辑值有一个为“是”,返回值就是“是”
例如:
[root@localhostbin]#vitest8
#!/bin/Bash
part1=”1111”
part2=””#part2为空
[“$part1”–a“$part2”]
echo$?#保存前一个命令的返回码
[“$part1”–o“$part2”]
echo$?
3.4.4文件操作
文件测试操作表达式通常是为了测试文件的信息,一般由脚本来决定文件是
否应该备份、复制或删除。由于文件的操作符有很多,在表3-4中只列举一些常用
的操作符。
表3-4文件测试操作符
运算符号含义
-d对象存在且为目录返回值为“是”
-f对象存在且为文件返回值为“是”
-L对象存在且为符号连接返回值为“是”
-r对象存在且可读则返回值为“是”
-s对象存在且长度非零则返回值为“是”
-w对象存在且且可写则返回值为“是”
-x对象存在且且可执行则返回值为“是”
例如:
[root@localhostbin]#vitest9
#!/bin/Bash
[-d/root/zb]
echo$?#保存前一个命令的返回码
3.5循环结构语句
3.5.1for循环
语法:
for变量in列表
do
操作
done
列表是在for循环的内部要操作的对象,可以是字符串也可以是文件,如果
是文件则为文件名。
例如:
[root@localhostbin]#gedittest11
#!/bin/Bash
foriina,b,c,e,I2,4,6,8
do
echo$i
done
注意:在循环列表中的空格可表示换行。
3.5.2while循环
语法:
while表达式
do
操作
done
只要表达式为真,do和done之间的操作就一直会进行。
例如:
[root@localhostbin]#gedittest13
total=0
num=0
while((num<=100));
do
total=’expor$total+$num’
done
echo“Theresultis$total”
3.5.3until循环
语法:
until表达式
do
操作
done
重复do和done之间的操作直到表达式成立为止。
例如:
[root@localhostbin]#gedittest15
total=0
num=0
until[$num–gt100]
do
total=’expor$total+$num’
num=’expor$num+1’
done
echo“Theresultis$total”
3.6条件结构语句
Shell程序中的条件语句主要有if语句与ca语句。
3.6.1if语句
语法:
if表达式1then
操作
elif表达式2then
操作
elif表达式3then
操作
……
el
操作
fi
Linux里的if的结束标志是将if反过来写成fi;而elif其实是elif的
缩写。其中,elif理论上可以有无限多个。
例如:
[root@localhostbin]#gedittest16
for((j=0;j<=10;j++))
do
if(($j%2==1))
then
echo“$j”
fi
done
3.6.2ca语句
语法:
ca表达式in
值1|值2)
操作;;
值3|值4)
操作;;
值5|值6)
操作;;
*)
操作;;
esac
ca的作用就是当字符串与某个值相同是就执行那个值后面的操作。如果同
一个操作对于多个值,则使用“|”将各个值分开。在ca的每一个操作的最后面
都有两个“;;”分号是必需的。
Linux是一个多用户操作系统,以下程序根据不同的用户登录输出不同的反
馈结果:
[root@localhostbin]#vitest17
#!/bin/sh
ca$USERin
beechen)
echo“Youarebeichen!”;;
liangnian)
echo“Youareliangnian”;//注意这里只有一个分号
echo“Welcome!”;;//这里才是两个分号
root)
echo“Youareroot!”;echo“Welcome!”;;
//将两命令写在一行,用一个分号作为分隔符
*)
echo“Whoareyou?$USER?”;;
easc
3.7在Shell脚本中使用函数
Shell程序也支持函数。函数能完成一特定的功能,可以重复调用这个函
数。
函数格式如下:
函数名()
{
函数体
}
函数调用方式为
函数名参数列表
求和函数:
[root@localhostbin]#gedittest18
#!/bin/sh
add()
{
a=$1
b=$2
z=’expr$a+$b’
echo“Thesumis$z”
}
add$1$2
执行脚本:
[root@localhostbin]#./test181020
Thesumis30
3.8在Shell脚本中调用其他脚本
在Shell脚本的执行过程中,Shell脚本支持调用另一个Shell脚本。
以下例子是在test19中调用test20:
#test20脚本
#!/bin/sh
echo“Howareyou$USER?”
#test19脚本
#!/bin/sh
echo“Themainnameis$0”
./test20
echo“Thefirststringis$1”
执行脚本:
[root@localhostbin]#./test19abc123
Themainnameis./test19
Howareyouroot?
thefirststringisabc123
四、Shell与oracle数据库的交互
Shell通过sqlplus与oracle数据库进行交互,包括对表的增、删、改、
查。
4.1shell向库表中新增数据
以函数的形式举例向库表中新增数据:
#!/bin/sh
Table_inrt()
{
sqlplus$OracleUrname/$OraclePasswd@$OracleDbName<
inrtintotable1(column1,column2,…)values($1,$2,…);
commit;
EOFSQL
}
#调用函数。传递两个参数:10、20
Table_inrt1020
4.2shell删除库表中的数据
#!/bin/sh
Table_delete()
{
sqlplus$OracleUrname/$OraclePasswd@$OracleDbName<
deletefromtable1whereid=’$1’;
commit;
EOFSQL
}
#调用函数。传递参数值:20
Table_delete20
4.3shell修改库表中的数据
可以直接向函数传递sql语句作为参数,这样,函数更具通用性:
#!/bin/sh
Table_dml()
{
sqlplus$OracleUrname/$OraclePasswd@$OracleDbName<
varv_returnnumber;
begin
$1
ifsql%rowcount=1then
:v_return:=0;
elsifsql%rowcount=0then
:v_return:=1;
el
:v_return:=2;
endif;
commit;
exceptionwhenothersthen
:v_return:=3;
end;
/
lectdecode(:v_return,1,'找不到数据文件',2,'找到多个数据文件',3,'数据库
错误')fromdual;
exit:v_return
--v_return返回值含义:
--0:成功
--1:找不到数据文件
--2:找到多个数据文件
--3:数据库错误
EOFSQL
}
#调用
Table_dml"updatetable1tcolumn1=’value1’Whereid=’20’;"
4.4shell查询库表中的数据
Shell查询库表中的数据是借助文件来实现的。首先sqlplus将查询内容写
入文件,shell通过查询文件内容,得到需要的数值。
#!/bin/sh
Table_lect()
{
sqlplus–s$OracleUrname/$OraclePasswd@$OracleDbName<
theadingoff;
ttermoutoff;
tfeedbackoff;
ttrimspoolon;
techooff;
tlinesize200;
spool$1
lect‘this_date=’||to_char(last_date,‘yyyymmdd’)fromtable1;
spooloff
EOFSQL
}
#函数的调用。参数为文件
Table_lect/
#获取文件中this_date的值
THIS_DATE=`grepthis_date/|awk-F='{print$2}'`
echo$THIS_DATE
本文发布于:2022-11-27 17:57:48,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/32472.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |