Chinaunix首页 | 论坛 | 博客
  • 博客访问: 388029
  • 博文数量: 55
  • 博客积分: 1907
  • 博客等级: 上尉
  • 技术积分: 869
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 19:30
文章分类

全部博文(55)

文章存档

2011年(32)

2010年(23)

分类: LINUX

2011-05-08 16:05:38

Shell 程序设计

什么是 shell

shell 用户与 LINUX 系统间接口的程序,它允许用户向操作系统输入需要执行的命令 shell 在表面上与 WINDOWS 的命令提示符相似,但是它具有完成复杂程序设计的功能。通过 shell 可以执行命令,调用 LINUX 工具,还可以自行编写程序。shell 使用解释型语言,指令不需要编译且是逐行执行的,所以当 shell 出现语法错误时,只有执行到才会被发现。在 LINUX 系统中可以通过命令 #/bin/sh  –version 来查看 shell 的版本。我的LINUX Fedora9shell 的版本是:GNU bash, version 3.2.33(1)-release (i386-redhat-linux-gnu)

 

重定向输出

  1. # echo “This is a shell tets” > /tmp/shell_test

默认情况下,shell_test的内容被覆盖    

  1. # echo “This is a shell tets” >> /tmp/shell_test

默认情况下,输出的内容附加到shell_test的末尾

 

shell 语法

1、 变量

shell 变量在使用前不需要先定义,大小写敏感。默认情况下,所有变量都被看做是字符串并以字符串来存储。在变量面前加一个 $ 号来访问变量,如 $a ,即访问变量 a 的内容。如果字符串里面包含有空格,要用引号把它们括起来,且等号两边不能有空格。

我们可以通过 read 命令来读取变量,如:

  1. # read tmp
  2. Hello , I am shell
  3. # echo $tmp
  4. Hello , I am shell

当用 read 命令读取变量时,即使字符串中有空格也不需要用引号将它们括起来。

在输出变量的内容时,使用单引号跟反斜线(\)时不进行变量的替换,使用双引号时则要进行变量的替换。

环境变量:

$HOME    当前用户的主目录

$PATH     以冒号分隔的用来搜索命令的列表

$PS1         命令提示符

$PS2         二级提示符

$IFS          输入域分隔符

$S0           shell 脚本的名字

$#             传递给 shell 脚本的参数个数

$$             shell 脚本的进程号

参数变量:

$S1$S2……    脚本程序的参数

$*                              在一个变量中列出所有的参数,各个参数之间用 IFS 中的第一个字符隔开

$@                             在一个变量中列出所有的参数,不受环境变量 IFS 的影响。

 

 

控制结构

1if 语句

  1. if condition
  2. then
  3. statements
  4. elif condition
  5. statements
  6. else
  7. statements
  8. fi

 

2、  for 语句

  1. for variable in values
  2. do
  3. statements
  4. done

3、  while 语句

  1. while condition
  2. do
  3. statements
  4. done

 

4、  until 语句

  1. until condition
  2. do
  3. statements
  4. done

 

5、  case 语句

  1. case variable in
  2. pattern [ | pattern]) statements ;;
  3. pattern [ | pattern]) statements ;;

  4. esac

 

6、  命令列表

AND 列表:遇到假则返回。

  1. statements1 && statements2 && statements3

OR   列表:遇到真则返回。

  1. statements1 | | statements2 | | statements3

  

 

7、  函数

  1. function_name () {
  2. statements
  3. }

命令

break continue .true eval (对参数求值)、exec(将shell 替换为另一个程序) exit n export expr(对表达式求值,相当于 $( ( ) ) printf return set shift

trap unset find grep 。要重点学习 find grep 命令。

 

阅读(2292) | 评论(1) | 转发(1) |
0

上一篇:13-进程间通信:管道

下一篇:单链表操作

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

czqwust2012-08-16 17:01:41

学习了