UNIX编程环境(The UNIX Programming Environment) 备忘录(五)

第五章  Shell编程

 

在shell中,case更为高效(记得书上提到了这个,不过在这遍整理时,没发现原话)

case word in
模式) 命令;;  #结尾是两个";"
...
模式) 命令;;
esac

==========================================
Shell内部变量

$#  参数个数
$*  shell所有参数
$@  类似$*
$-  Shell用的选择项
$?  上次执行命令的返回值
$$  Shell的进程标识符
$!  用&启动的最后一个命令的进程标识符
$HOME  cd命令的缺省参数
$IFS  参数分割词的字符表
$MAIL  信件文件,当其改变时给出信息you have mail
$PATH  搜索命令的目录表
$PS1  提示字符串,缺省为$
$PS2  后继命令行提示符,缺省为>


date命令输出结果如下:
Tue Nov  2 17:36:21 CST 2010
则,set `date`的结果是:
$1 = 'Tue'
$2 = 'Nov'
...
$6 = '2010'

==========================================
Shell模式匹配规则

*  匹配任意字符串,包括空字符串  
?  匹配任意单个字符
[xyz]  匹配xyz中的任意字符
"..."  完全匹配...,也可写成'...'
/c  匹配文字c
a|b  与a或b匹配
/  对于文件名,仅与表达式中显式的/符号相匹配;对于case语句,与其他字符一样匹配
.  作为文件名的第一个字符,仅与表达式中显式的.符号相匹配


==========================================
which  在路径中查找命令的位置


==========================================
Shell中的for,while,until循环

for i in 文件列表
do
 循环体,$i依次取表中的元素值
done


for i  #隐含表示取全部参数,即in $*
do
 循环体,$i依次取表中的元素值
done


while 命令
do
 循环体,只要命令返回状态为真就继续执行
done


until 命令
do
 循环体,只要命令返回状态为假就继续执行
done


==========================================
Shell中变量的赋值

$var  var的值,若var无定义则无值
${var}  同上,用于变量后面跟着字母数字串的情况
${var+thing} var有定义时,取值var;否则无值
${var-thing} var有定义时,取值var;否则取值thing,但$var不变,即仍无定义
${var=thing} var有定义时,取值var;否则取值thing,但$var的值设为thing
${var?message} var有定义时,取值var;否则打印message并退出shell,若message为空,打印:var:parameter not set

示例:
t = ${1-60} #如果没有提供参数,即$1未定义,则t=60,否则t=$1

==========================================
Shell信号值

0  shell退出
1  挂断
2  中断(DEL键)
3  退出(Ctrl+/,导致突然撤出内核)
9  强迫终止(不能捕获或不予执行)
15  终止,由kill产生的缺省信号


trap捕获中断

trap 命令序列 信号值

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值