文档介绍:Shells编程快速入门(四)之Bash Shell
 
Bash Shell结构
Korn和Bash shells非常相似,但是还是有一些不同之处。Bash的结构如下所示。
Bash Shell语法结构
Shbang行
"shbang" 是脚本起始行,告诉kernel那个shell解析. #!位于行头。例如#!/bin/bash
注释
行注释用#:# This is ment
通配符
例如*, ?, 和[ ] 用于文件名扩展。<, >, 2>, >>, 和| 符号用于IO和重定向和管道。为了保证这些符号不被解析,这个字符要被引起来。例如:
rm *; ls ??;  cat file[1-3];
echo "How are you?"
输出显示
使用echo命令。使用`或者一对“”通配符。例如:
echo "How are you?"
局部变量
局部变量作用于当前shell,
variable_name=value
declare variable_name=value
name="John Doe"
x=5
全局变量
全局变量也称为环境变量. 例如:内建的带-x选项的声明函数也可以设置为环境变量。可以用export使用。例如:
export VARIABLE_NAME=value
declare -x VARIABLE_NAME=value
export PATH=/bin:/usr/bin:.
从变量中提取值
使用$.例如:
echo $variable_name
echo $name
echo $PATH
读取用户输入
使用read读入一行。例如:
EXAMPLE
echo "What is your name?"
read name
read name1 name2 ...
参数
可以从命令行传入参数。位置参数用于从脚本中接收值。例如:
At mand line:
$ scriptname arg1 arg2 arg3 ...
在脚本中:
echo $1 $2 $3
位置参数
echo $*
所有位置参数
echo $#
位置参数号
数组
Bourne shell使用位置参数创建单词列表。除了位置参数外, Bash shell支持数组语法,起始索引是0。 Bash shell数组使用declare -a 命令创建。例如:
set apples pears peaches  (positional parameters)
echo $1 $2 $3
 
declare -a array_name=(word1 word2 word3 ...)
declare -a fruit=( apples pears plums )
echo ${fruit[0]}
算术
像C/TC shells和Bourne shell, UNIX/Linux 命令的输出可以指定到一个变量。Bash shell提供新的语法. 使用前端加$,例如:
variable_name=`command`
variable_name=$( command )
echo $variable_name
 
echo "Today is `date`"
echo "Today is $(date)"
算术
Bash shells支持整数算术。declare -i 命名用于声明一个整型变量。Korn shell的typeset命令也可以用于向后兼容。
例如
declare -i variable_name
used for bash
typeset -i variable_name
can be used to patible with ksh
 
(( n=5 + 5 ))
 
echo $n
 
 
操作符
Bash shell 使用内建命令,类似于C语言。
例如
相等性:
逻辑性:
==
equal to
&&
and
!=
not equal to
||
or
 
 
!
not
关系型:
> 
greater than
>=
greater than, equal to
< 
less than
<=
less than, equal to
条件语句
If类似于C语言。if 用endif结束。[[ ]] 用于模式匹配条件表达式。[ ] 用于向后兼容Bourne shell。例如:
The if construct is:
if  command
then
   block of stateme