1、shbang行 “shbang”行是脚本的第一行,它让内核知道使用哪种shell来解释脚本中的行,shbang行是由一个#!后面再加上shell的完整路径组成的,在其后还可以再跟上各种选项用来控制shell的行为:
- #!/bin/bash
2、注释 注释由一个符号#后面跟一些描述行的说明组成,它们可以从行的任意位置开始,到行的末尾结束:
- #!/bin/bash
- #example comment1
- #example comment2
- #example comment3
3、通配符 shell中有些字符具有特殊意义,它们被称为shell的元字符或者通配符,这些字符既不是数字也不是字母,如果*、?、[、]、<、>、2>、>>、|等,*、?、[、]符号通常用于文件名的扩展,而<、>、2>、>>、|这些符号则用于标准I/O的重定向和管道,为了避免这些特殊字符被shell解释,它们必须被应用:
- #!/bin/bash
- #example comment1
- #example comment2
- #example comment3
- rm *
- ls ??
- cat file[1-3]
- echo "how are your?"
4、显示输出 echo命令用于向屏幕显示输出信息,此时通配符必须使用反斜杠或者配对引号进行转义:
- echo "how are you?"
5、局部变量 局部变量的作用域被限制在当前的shell(进程)中,当这个脚本执行结束后,就超出了局部变量的作用域,它们就不可以再使用了。shell内置的declare命令可以用来定义局部变量,可以创建局部变量并为其赋值:
- variable_name=value
- declare variable_name=value
- name="john doe"
- x=5
6、全局变量 全局变量又称为环境变量,它们由内置的export命令创建。它们为当前运行的shell(进程)以及由此shell(进程)派生的所有子进程创建,当脚本执行结束后,这些全局变量也超出作用域。带-x选项的内置命令declare也用于设置环境变量,并且将其导出(export):
- export VARIABLE_NAME=value
- export PATH=/bin:/usr/bin:.
- declare -x VARIABLE_NAME=value
注意:在局部变量和全局变量定义、赋值时,变量名与赋值符号之间不能有空格,赋值符号与变量值之间也不能有空格:
variable_name=value 正确
variable_name = value 错误
variable_name =value 错误
variable_name= value 错误
7、提取变量值 使用美元符号$可以提取变量的值:
- echo $variable_name
- echo $name
- echo $PATH
8、读取用户输入 shell可能会要求用户输入信息,read命令用于从用户输入中读取一行,如果read命令有多个参数,则shell会将输入的这一行分解为多个单词(word),每个单词用于给一个变量赋值:
- echo "what is your name?"
- read name
- read name1 name2 name3
9、参数 可以在命令行中给脚本传递参数,在脚本中利用位置参数来获取参数的值:
- $scriptname arg1 arg2 arg3
- echo $1 $2 $3
- echo $*
- echo $#
$1、$2、$3表示具体的位置参数
$*表示所有的位置参数
$#表示位置参数的个数
10、命令替换 Linux命令的输出可以被赋值给一个变量,或者通过使用反引号引用命令,在字符串中使用该命令的输出。在Bash shell中还提供了一种新的语法:不使用反引号,而是将命令包含在由美元符号开始的一对圆括号中即可。
- variable_name=`command`
- variable_name=$(command)
- echo $variable_name
- echo "today is `date`"
- echo "today is $(date)"
- <pre name="code" class="plain">liuwei@jupiter:~$ echo "today is `date`"
- today is Thu Jul 28 20:47:46 CST 2011
- liuwei@jupiter:~$ echo "today is $(date)"
- today is Thu Jul 28 20:48:00 CST 2011
- liuwei@jupiter:~$ echo "today is $( date )"
- 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