Chinaunix首页 | 论坛 | 博客
  • 博客访问: 319928
  • 博文数量: 60
  • 博客积分: 2781
  • 博客等级: 少校
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-23 16:42
文章分类

全部博文(60)

文章存档

2011年(33)

2010年(27)

分类:

2010-07-11 21:50:52

替换运算符

${varname:-word}:如果varname存在且非null,则返回其值;否则,返回word。

${varname:=word}:如果varname存在且非null,则返回其值;否则,设置它为word,并返回其值。

${varname:?message}:如果varname存在且非null,则返回其值;否则,返回varname:message,目的是为了捕捉由于变量未定义所导致的错误。

${varname:+word}:如果varname存在且非null,则返回word;否则,返回null。测试变量是否存在。

PS:其中的冒号:是可选的,如果省略冒号每个定义变为“如果varname存在”。

-----------------华丽的分割线-------------------

模式匹配运算符

${variable#pattern}:如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下的部分。

${variable##pattern}:如果模式匹配于变量值的开头处,则删除匹配的最长部分,并返回剩下的部分。

${variable%pattern}:如果模式匹配于变量值的结尾处,则删除匹配的最短部分,并返回剩下的部分。

${variable%%pattern}:如果模式匹配于变量值的结尾处,则删除匹配的最长部分,并返回剩下的部分。

PS:识别#和%,#在%的左边,所以#匹配开头,%匹配结尾。

-----------------华丽的分割线-------------------

位置参数

$n(n为正整数)表示命令行的第n个参数,当n>9时,应该用花括号${n}括起来数字。
$0 表示shell程序的名称。

shell中有许多内置变量,这里总结下。
$# 目前进程的参数个数
$@ 传递给当前进程的命令行参数,如果在双引号内,会展开为个别的参数。
$* 传递给当前进程的命令行参数,如果在双引号内,会展开为一单独参数。
$? 前一命令的退出状态
$$ shell进程的进程编号(PID)
$PPID shell进程的父进程编号(PPID)
$! 最近一个后台命令的进程编号
$ENV 环境
$PATH 命令查找路径
$HOME 用户目录
$LANG locale的名称

-----------------华丽的分割线-------------------

test命令用来测试脚本里的条件,等同于[...]
test [expression] <======> [ [expression] ]
即 if test "$str1" = "$str2"     if ["$str1" = "$str2"]
   then                           then
      ...                            ...
   fi                             fi

运算符 如果...则为真
string string不是null
-b file file是块设备文件
-c file file是字符设备文件
-d file file是目录
-e file file存在
-f file file为一般文件
-g file file设置了gid位
-h file file是一符号链接
-L file file是一符号链接(等同于-h)
-n string string是非null
-p file file是一命名管道(FIFO文件)
-r file file可读
-S file file是socket
-s file file不是空的
-t n 文件描述符n指向一终端
-u file file设置了uid位
-w file file是可写入的
-x file file是可执行的,或file是可被查找的目录
-z string string为null
S1 = S2 字符串s1和s2相同
S1 != S2 字符串s1和s2不相同
n1 -eq n2 整数n1等于n2
n1 -ne n2 整数n1不等于n2
n1 -lt n2 n1小于n2
n1 -gt n2 n1大于n2
n1 -le n2 n1小于等于n2
n1 -ge n2 n1大于等于n2

阅读(1113) | 评论(0) | 转发(0) |
0

上一篇:shell学习笔记(2)

下一篇:源码安装程序

给主人留下些什么吧!~~