跳至主要内容

Oracle学习笔记20080129

环境和shell变量
$ variable-name = value 或 ${variable-name = value}
注意,等号两边可以有空格。如果取值包含空格,必须用双引号括起来。shell变量可以用大小写字母。
表14-1变量设置时的不同模式
Variable-name=value 设置实际值到variable-name
Variable-name+value如果设置了variable-name,则重设其值
Variable-name:?value 如果未设置variable-name,显示未定义用户错误信息
Variable-name?value 如果未设置variable-name,显示系统错误信息
Variable-name:=value 如果未设置variable-name,设置其值Variable-name:-value 同上,但是取值并不设置到variable-name,可以被替换

显示变量直接echo,清除变量unset,可将多个变量结合使用
有时要测试是否已设置或初始化变量。如果未设置或初始化,就可以使用另一值。
此命令格式为:
$ {variable : -value }意即如果设置了变量值,则使用它,如果未设置,则取新值。
$ { variable : =value }测试变量是否取值,如果未设置,则返回一空串。
方法如下:
$ { variable : +value }使用下述方法初始化变量为空字符串。v
ariable = " "$DETINATION = " "

如果设置变量时,不想再改变其值,可以将之设置为只读方式。如果有人包括用户本人想要改变它,则返回错误信息。
格式如下:variable - name = valuereadonly variable-name
设置环境变量VARIABLE - NAME = value;export VARIABLE-NAME在两个命令之间是一个分号,也可以这样写:VARIABLE - NAME = valueExport VARIABLE-NAME用env查看所有环境变量,同样是用unset命令清楚环境变量

CDPATH改变目录路径变量,保留一系列由冒号隔开的路径名,用于cd命令。如果设置了CDPATH,cd一个目录时,首先查找CDPATH,如果CDPATH指明此目录,则此目录成为当前工作目录。
例子如下:$ CDPATH=:/home/dave/bin:/usr/local/apps;export CDPATH.
如果要$ cd appscd命令首先在C D PAT H中查找目录列表,如果发现a p p s,则它成为当前工作目录。
特定变量参数
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程I D号
$! 后台运行的最后一个进程的进程I D号
$@ 与$ #相同,但是使用时加引号,并在引号中返回每个参数
$- 显示s h e l l使用的当前选项,与s e t命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

..那啥,又是草草略过总觉得不知其所以然

引号的重要性表
15-1 shell引用类型
" " 双引号 ` 反引号' ' 单引号 \ 反斜线
上次打了一段话做实验,发觉不行,原因是我用的是单引号而不是反引号,在实际过程中echo "中的命令可以使用反引号"
基础编程脚本不是复杂的程序,它是按行解释的。脚本第一行总是以#!/bin/sh开始,这段脚本通知shell使用系统上的Bourne shell解释器。
条件测试测试文件状态test一般有两种格式,即:test condition或[condition]使用方括号时,要注意在条件两边加上空格。
测试文件状态的条件表达式很多,但是最常用的可在表17-1中查到。
表17-1 文件状态测试
- d 目录
- s 文件长度大于0、非空
- f 正规文件
- w 可写
- L 符号连接
- u 文件有suid位设置
- r 可读
- x 可执行
使用两种方法测试文件scores.txt是否可写并用最后退出状态测试是否成功。记住, 0表示成功,其他为失败。
测试时使用逻辑操作符测试文件状态是否为OK,但是有时要比较两个文件状态
。shell提供三种逻辑操作完成此功能。-
a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。

字符串测试是错误捕获很重要的一部分,特别在测试用户输入或比较变量时尤为重要。字符串测试有5种格式。
test "string"
test string_operator "string"
test "string" string_operator "string" [string_operator string] [string string_operator string]这里,string_operator可为:= 两个字符串相等。!= 两个字符串不等。
-z 空串。-n 非空串。
测试数值测试数值可以使用许多操作符,一般格式如下:"number"numeric_operator"number"或者["number"numeric_operator"number"]numeric_operator可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。

expr用法expr命令一般用于整数值,但也可用于字符串。
一般格式为:expr argument operator argumentexpr也是一个手工命令行计数器。
退出状态在书写正确脚本前,大概讲一下退出状态。任何命令进行时都将返回一个退出状态。如果要观察其退出状态,使用最后状态命令:$ echo $?要退出当前进程,shell提供命令exit,一般格式为:exit n
注一笔,脚本本身加入退出脚本值是一个好的编程习惯

流控制if、then、else语句提供条件测试。测试可以基于各种条件。例如文件的权限、长度、数值或字符串的比较。这些测试返回值或者为真(0),或者为假(1)。基于此结果,可以进行相关操作。在讲到条件测试时已经涉及了一些测试语法。case语句允许匹配模式、单词或值。一旦模式或值匹配,就可以基于这个匹配条件作其他声明。
for 循环 每次处理依次列表内信息,直至循环耗尽。
Until 循环 此循环语句不常使用,u n t i l循环直至条件为真。条件部分在循环末尾部分。
While 循环 w h i l e循环当条件为真时,循环执行,条件部分在循环头。

i f语句测试条件,测试条件返回真( 0)或假(1)后,可相应执行一系列语句。 i f语句结对错误检查非常有用。其格式为:if 条件1then 命令1elif 条件2then 命令2else 命令3if
if语句可用来测试传入脚本中参数的个数。使用特定变量 $ #,表示调用参数的个数。可以测试所需参数个数与调用参数个数是否相等。
有时需要知道脚本运行是交互模式(终端模式)还是非交互模式(cron或at)。脚本也许需要这个信息以决定从哪里取得输入以及输出到哪里,使用test命令并带有- t选项很容易确认这一点。如果t e s t返回值为1,则为交互模式。

评论

此博客中的热门博文

Python学习笔记20100117

映射list   Dictionary 是用{}. list 是一那个[]. turple是用() 当你定义过dictionary后,你可以使用d.keys(), d.values(),d.items()将定义后的时候分别显示出来 当然可以将list里的值加减乘除,也可以如一般的定义直接重新复制这个list. 链接与分割字符串的 li=";", join(li) 则显示的就是 分隔符为;的数 如果使用li=li.split(";")则将刚刚;的分隔符删除,而split里也可定义域,如li.split(";",1)   自省 <---这是啥 之前在使用的时候发觉有些书本上的模块不能调用,很多是py脚本定义过的函数。 下载该脚本s,然后上传至指定位置。 >>>import sys >>>sys.path >>>sys.path.append("绝对位置")然后就能调用这些脚本和参数了。 删除 >>>sys.path.pop() 定义一个参数是 def info(test, test1=10.test2=12): info是函数名,test是必备参数,因为没有定义值,test1和test2是可选参数,定义了初始值   以上是外部函数的调用,下面转到内部函数 内部函数有type,str,dir及其他   ---type 返回任意字符的类型,模块也可以。types模块 >>> type(1) <type 'int'> >>> li=[] >>> type(li) <type 'list'> >>> import odbchelper >>> type(odbchelper) <type 'module'> >>> type(sys) <type 'module'> >>> import types ...

Setagaya park

  We visited Setagaya Park (世田谷区) yesterday. This park reminds us when we in Europe, which has a fancy fountain in the middle, and free entrance. People just laid down on the grass, enjoy the day time they can waste. people who have kids together,  play all different kinds of sports. you really can't image whether you are in Europe or  Japan. I would prefer to use a Bus instead of the metro, the metro is fast, but you only can see the dark, light, people sit or stand as Sardine, without any emotion. but on the bus, you can see the traffic, the shop, everything on the road. When we on our way to the park, we stop by a good chocolate shop named " craft chocolate works ",  this is a very good place to have ice cream, you probably can choose half & half, you can enjoy the feeling when you smell the chocolate smell and eat with it.  or you can enjoy beer or cake in "globe antiques (ザ グローブアン ティ ークス) .   also, we checked the Blue Bottle Coffee Sangenjaya ...