linux培训

更新时间:2022-11-27 17:57:48 阅读: 评论:0


2022年11月27日发(作者:俄罗斯门将)

北京联银通科技有限公司

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小时内删除。

下一篇:出口发票
标签:linux培训
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图