Bash shell的构成

来源:互联网 发布:java web项目开发文档 编辑:程序博客网 时间:2024/06/11 10:58

1、shbang行    “shbang”行是脚本的第一行,它让内核知道使用哪种shell来解释脚本中的行,shbang行是由一个#!后面再加上shell的完整路径组成的,在其后还可以再跟上各种选项用来控制shell的行为:

[plain] view plaincopyprint?
  1. #!/bin/bash  

2、注释    注释由一个符号#后面跟一些描述行的说明组成,它们可以从行的任意位置开始,到行的末尾结束: 

[plain] view plaincopyprint?
  1. #!/bin/bash  
  2. #example comment1  
  3.         #example comment2  
  4.                 #example comment3  

3、通配符    shell中有些字符具有特殊意义,它们被称为shell的元字符或者通配符,这些字符既不是数字也不是字母,如果*、?、[、]、<、>、2>、>>、|等,*、?、[、]符号通常用于文件名的扩展,而<、>、2>、>>、|这些符号则用于标准I/O的重定向和管道,为了避免这些特殊字符被shell解释,它们必须被应用:

[plain] view plaincopyprint?
  1. #!/bin/bash  
  2. #example comment1  
  3.         #example comment2  
  4.                 #example comment3  
  5.   
  6. rm *  
  7. ls ??  
  8. cat file[1-3]  
  9. echo "how are your?"  

4、显示输出    echo命令用于向屏幕显示输出信息,此时通配符必须使用反斜杠或者配对引号进行转义

[plain] view plaincopyprint?
  1. echo "how are you?"  

5、局部变量    局部变量的作用域被限制在当前的shell(进程)中,当这个脚本执行结束后,就超出了局部变量的作用域,它们就不可以再使用了。shell内置的declare命令可以用来定义局部变量,可以创建局部变量并为其赋值:

[plain] view plaincopyprint?
  1. variable_name=value  
  2. declare variable_name=value  
  3. name="john doe"  
  4. x=5  

6、全局变量    全局变量又称为环境变量,它们由内置的export命令创建。它们为当前运行的shell(进程)以及由此shell(进程)派生的所有子进程创建,当脚本执行结束后,这些全局变量也超出作用域。带-x选项的内置命令declare也用于设置环境变量,并且将其导出(export):

[plain] view plaincopyprint?
  1. export VARIABLE_NAME=value  
  2. export PATH=/bin:/usr/bin:.  
  3.   
  4. declare -x VARIABLE_NAME=value  

注意:在局部变量和全局变量定义、赋值时,变量名与赋值符号之间不能有空格,赋值符号与变量值之间也不能有空格:

variable_name=value    正确

variable_name = value  错误

variable_name =value   错误

variable_name= value   错误

7、提取变量值    使用美元符号$可以提取变量的值:

[plain] view plaincopyprint?
  1. echo $variable_name  
  2. echo $name  
  3. echo $PATH  

8、读取用户输入    shell可能会要求用户输入信息,read命令用于从用户输入中读取一行,如果read命令有多个参数,则shell会将输入的这一行分解为多个单词(word),每个单词用于给一个变量赋值:

[plain] view plaincopyprint?
  1. echo "what is your name?"  
  2. read name  
  3. read name1 name2 name3  

9、参数    可以在命令行中给脚本传递参数,在脚本中利用位置参数来获取参数的值:

[plain] view plaincopyprint?
  1. $scriptname arg1 arg2 arg3  
  2.   
  3. echo $1 $2 $3  
  4. echo $*  
  5. echo $#  

$1、$2、$3表示具体的位置参数

$*表示所有的位置参数

$#表示位置参数的个数

10、命令替换    Linux命令的输出可以被赋值给一个变量,或者通过使用反引号引用命令,在字符串中使用该命令的输出。在Bash shell中还提供了一种新的语法:不使用反引号,而是将命令包含在由美元符号开始的一对圆括号中即可。

[plain] view plaincopyprint?
  1. variable_name=`command`  
  2. variable_name=$(command)  
  3. echo $variable_name  
  4.   
  5. echo "today is `date`"  
  6. echo "today is $(date)"  
[plain] view plaincopyprint?
  1.   
[plain] view plaincopyprint?
  1. <pre name="code" class="plain">liuwei@jupiter:~$ echo "today is `date`"  
  2. today is Thu Jul 28 20:47:46 CST 2011  
  3. liuwei@jupiter:~$ echo "today is $(date)"  
  4. today is Thu Jul 28 20:48:00 CST 2011  
  5. liuwei@jupiter:~$ echo "today is $( date )"  
  6. today is Thu Jul 28 20:48:18 CST 2011</pre>  

注意$()中的空格,是允许的。

11、数组


12、运算符


13、算术运算


14、条件语句


15、循环语句


16、函数

文章转自:http://blog.csdn.net/xiruanliuwei/article/details/6641971

0 0
原创粉丝点击