UNIX 常用知识系列讲座(四)

Posted by NosaLee in UNIX/Linux on 18-08-2011. Tags: , ,

作者:牧山道人
原文地址:http://www.seeksunslowly.com/unix-basic-lecture-4
转载请注明出处,谢谢。
_____________________________________

笔者根据 7 年多的实作经验编写了该系列讲座,共分为 5 讲,每讲 10 个要点。
这 50 个要点涵盖了操作 UNIX 的必备知识及正确编写 shell 脚本的必要理论,每一要点均附有演示(在本博客中只能略过,实际培训才有办法演示)。

该讲座在之前任职的公司举办过两次,反映非常好,学员都称专业、有用、获益匪浅。
若您或所在企业有现场培训需要(现场培训的效果,您懂的:)),请留下 QQ 及电话,笔者会及时与您商谈。

31、if 语句
语法
if (condition1) then
commands1
elif (condition2) then
commands2
elif (condition3) then
command3
#…elif 可有多个…
else
commands4
fi

注意 elif, fi 的写法。
演示

32、while 语句
语法
while (condition)
do
commands
[break/continue]
done
注意 do…done 定界符。
演示

33、until 语句
语法
until (condition)
do
commands
[break/continue]
done
注意 do…done 定界符。
演示

34、for 语句
语法
for var in values-list
do
commands
[break/continue]
done
注意
1、values-list 可由命令得出或为固定值表(以空格分隔)。
2、for 相较于 while,并不常用。

演示

35、函数
声明
function-name()
{
commands
}
调用
像直接使用 UNIX 命令一下,包括参数的传递。
参数
无须声明。与在函数外使用一样,即 $n (n = 1 …9)。
注意
ksh 要求声明必须在调用前,所以,请养成这个良好习惯。
演示

36、test 表达式

用途
所有需要条件表达式的场合,比如,本讲的 if、while、until。

逻辑叠加符
&& – and; || – or; ! – not.

注意
test 只能评估一个表达式,即每用逻辑叠加符 && 或 || 一次,便须多写一次 test,如:
if (test $a = “Nosa” && test $b = “Lee”) …

常用 test 表达式参考(请自行验证)。
string string 不为空白字串
-n string string 的长度大于 0
-z string string 的长度等于 0
string1 = string2 string1 等于 string2
(= 号两边一定要加空格, 如test $KPI_Value = “successful!”, 切记切记)
string1 != string2 string1 不等于 string2
(注意事项同 = )
int1 -gt int2 int1 大于 int2
int1 -ge int2 int1 大于等于 int2
int1 -eq int2 int1 等于 int2
int1 -ne int2 int1 不等于 int2
int1 -le int2 int1 小于等于 int2
int1 -lt int2 int1 小于 int2
-r filename 档案可读取
-w filename 档案可写入
-x filename 档案可执行
-f filename 档案为一般档
-d filename 档案为目录
-s filename 档案为非空的一般档
-e filename 档案是否存在

演示

37、expr 表达式
用途 作运算,常用作算术运算。
举例 var=`expr 4 + 4`
由来 若直接作写形如 var=4 + 4 的表达式进行赋值,shell 会将 = 号右边视作普通字符串,达不到目的,expr 应运而生。
常用运算符
* 乘法
/ 除法
% 取余
+ 加法
– 减法
演示

38、shell script 几个常用元素
return 退出脚本
\ 续行符、转义符
“” 字符串定界符
# 注释符
” 字符串定界符(其间可含特殊字符)

演示

39、date 命令
script 中组织使用日期、时间常用。
常用形式
date +format
常用 format
%Y 4 位年
%y 2 位年
%m 2 位月
%d 2 位日
%H 2 位时
%M 2 位分
%S 2 位秒
注意 format 可包含其他字符,以组织成可读性更高的格式,如 date +%H:%M:%S
演示

40、模拟手工输入
格式(举例)
(
sleep 1
echo “rasbkg”
sleep 1
echo “****”
sleep 1
echo “ls -l”
sleep 1
echo “exit”
) | telnet gxsrbzdb
特别说明 这是一个非常强大的功能——凡是能用手做的事,就能通过 script 自动完成。有时甚至可省掉很多 ftp 中转环节,需要灵活运用。
演示

Post a comment