第2章 shell的语法

  • 管道和重定向
1 重定向输出>
2 重定向输入<
3 管道|

 

  • 变量
1 用户变量
2 环境变量
3 参数变量
    参数变量         说明    
    $0     shell脚本的名字  
    $$     shell脚本的进程号  
    $1, $2, ...       各个参数
    $#     参数个数
    $*     列出所有参数
    $@     列出所有参数(不受IFS改变)  

 

  •  条件测试命令test或[
字符串比较
    string1 = string2     
    string1 != string2     
    -n string   字符串不为空,则为真  
    -z string   字符串为空,则为真  
算术比较
  expr1 -eq expr2     如果相等,则为真
  expr1 -ne expr2   如果不相等,则为真    
  expr1 -gt expr2   如果expr1大于expr2,则为真
  expr1 -ge expr2   如果expr1大于等于expr2,则为真
  expr1 -lt expr2   如果expr1小于expr2,则为真    
  expr1 -le expr2   如果expr1小于等于expr2,则为真
  ! expr  

文件条件测试
  -d file     如果是目录,则为真  
  -e file     如果文件存在,则为真(不可移植,用-f)  
  -f file     如果是普通文件,则为真  
  -g file     如果设置了set-group-id位,则为真  
  -r file     如果可读,则为真  
  -s file     如果大小不为0,则为真  
  -u file     如果设置了set-user-id位,则为真  
  -w file     如果可写,则为真  
  -x file     如果可执行,则为真  
 

 

  • 控制结构
if语句
for语句
while语句
until语句
case语句

 

  • 参数扩展

  ${param:-default}     如果param为空,就设为default  
  ${#param}    param长度
  ${param#word}   从param头部开始删除与word匹配到最小部分,返回剩余部分  
  ${param##word}   从param头部开始删除与word匹配到最大部分,返回剩余部分
  ${param%word}   从param尾部开始删除与word匹配到最小部分,返回剩余部分
  ${param%%word}   从param尾部开始删除与word匹配到最部分,返回剩余部分
示例
 1 #!/bin/sh
 2 
 3 unset foo
 4 echo ${foo:-bar} 
 5 
 6 foo=fud
 7 echo ${foo:-bar}
 8 
 9 foo=/usr/bin/X11/startx
10 echo ${foo#*/}
11 echo ${foo##*/}
12 
13 bar=/usr/local/etc/local/networks
14 echo ${bar%local*}
15 echo ${bar%%local*}
16 
17 exit 0

结果

1 bar
2 fud
3 usr/bin/X11/startx
4 startx
5 /usr/local/etc/
6 /usr/
 

 

 

 

posted @ 2012-07-10 19:56  kimiz  阅读(133)  评论(0)    收藏  举报