Chinaunix首页 | 论坛 | 博客
  • 博客访问: 990420
  • 博文数量: 123
  • 博客积分: 340
  • 博客等级: 一等列兵
  • 技术积分: 2976
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 11:50
个人简介

说点什么呢

文章分类

全部博文(123)

文章存档

2018年(2)

2017年(1)

2015年(3)

2014年(30)

2013年(81)

2011年(5)

2009年(1)

分类: 系统运维

2013-12-31 13:12:09

Shell 编程语法

(整理时间:2006-10-12)

l 三种指定解释执行脚本的Shell类型的方法

1. 如果Script的第一个非空白字元不是"#",则它会使用Bourne Shell  
2. 如果Script的第一个非空白字元是"#"时,但不以"#!"开头时,则它会使用C Shell  
3. 如果Script"#!"开头,则"#!"後面所写的就是所使用的Shell,而且要将整个路径名称指出来

注:

Bourne Shell的路径名称是:/bin/sh;

而 C Shell的路径名称是: /bin/csh

同时还可以用perl来解释执行,如 /etc/perl;

l 常用的系统变量

$HOME 使用者自己的目录  
$PATH 执行命令时所搜寻的目录  
$TZ 时区  
$MAILCHECK 每隔多少秒检查是否有新的信件  
$PS1 在命令列时的提示号  
$PS2 当命令尚未打完时,Shell 要求再输入时的提示号  
$MANPATH man 指令的搜寻路径 

l 常用的特殊变量

$0 这个程式的执行名字  
$n 这个程式的第n个参数值,n=1..9  
$* 这个程式的所有参数  
$# 这个程式的参数个数  
$$ 这个程式的PID  
$! 执行上一个背景指令的PID  
$? 执行上一个指令的返回值

l  Bourne Shell 中执行命令的五种方法

1. 直接下命令  

这个方式和在命令列中直接下命令的效果一样。  
2. 使用sh命令  

sh command  这个档案必须是Bourne ShellScript,但这个档案并不一定要设成可执行。 除此之外和直接下命令的方式一样。  
3. 使用"."命令  . command  

这时和使用sh命令相似,只不过它不像sh一般会产生新的process ,相反地, 它会在原有的process 下完成工作。  
4. 使用exec命令  exec command  

此时这个Script将会被所执行的命令所取代。当这个命令执行完毕之後,这个 Script也会随之结束。  
5. 使用命令替换  

这是一个相当有用的方法。如果想要使某个命令的输出成为另一个命令的参数 时,就一定要使用这个方法。我们将命令列於两个"`" 号之间,而Shell 会以 这个命令执行後的输出结果代替这个命令以及两个"`" 符号。  
str='Current directory is '`pwd`  
echo $str  
结果如下:  
Current directory is /users/cc/mgtsai  
这个意思是pwd 这个命令输出"/users/cc/mgtsai",而後整个字串代替原 来的`pwd` 设定str 变数,所以str 变数的内容则会有pwd 命令的输出。  
number=`expr $number + 1`  
这就是先前所提要作数值运算的方法,基本上expr命令只将运算式解,而 後输出到标准输出上。如果要将某变数设定成其值,非得靠命令替换的方 式不可。这个例子是将number变数的值加後再存回number变数。 

l 使用cut命令可以对字符串按照指定的分隔符分开,如
test=`echo $1|cut -d "@" -f1`

就是将变量1的值按照@字符分开,并将它付给test变量

l 数值测试运算符

-eq等于则为真 

  -ne不等于则为真 

  -gt大于则为真 

  -ge大于等于则为真 

  -lt小于则为真 

-le小于等于则为真

l 字符串测试运算符

=:等于则为真 

  !=:不相等则为真 

  -z字符串:字符串长度为零则为真 

-n字符串:字符串长度不为零则为真

l 文件测试运算符

-e文件名:如果文件存在则为真 
  -r文件名:如果文件存在且可读则为真 
  -w文件名:如果文件存在且可写则为真 
  -x文件名:如果文件存在且可执行则为真 
  -s文件名:如果文件存在且至少有一个字符则为真 
  -d文件名:如果文件存在且为目录则为真 
  -f文件名:如果文件存在且为普通文件则为真 
  -c文件名:如果文件存在且为字符型特殊文件则为真 
  -b文件名:如果文件存在且为块特殊文件则为真

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

上一篇:rsync+inotify实时同步配置

下一篇:vmstat命令

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册