key words : 执行多个命令的方法 、 创建与执行脚本、反引号`` 、数学计算
8.1 执行多个命令的方法:
1、在每个命令间用 ; 隔开 
[root@localhost ~]# date;who
2011年 05月 29日 星期日 08:44:32 EDT
root     :0           2011-05-29 08:32
root     pts/0        2011-05-29 08:33 (:0.0)
2、在每个命令间用 && 隔开,表示当前一个命令执行成功才执行下一个命令,常用在自动安装的script中
[root@localhost ~]# liting&&who
bash: liting: command not found
[root@localhost ~]#
3、|| : 当前一个命令执行成功时就不会往下执行,若失败就继续往下执行。
[root@localhost ~]# who||liting
root     :0           2011-05-29 08:32
root     pts/0        2011-05-29 08:33 (:0.0)
[root@localhost ~]#
[root@localhost ~]# liting||who
bash: liting: command not found
root     :0           2011-05-29 08:32
root     pts/0        2011-05-29 08:33 (:0.0)
[root@localhost ~]#
8.2 创建脚本
bash shell程序结构
大概由变量设置、内置命令、shell语法结构、函数及其他命令行的程序组成。
例:
#!/bin/bash                                          //表示用/bin/bash编译执行这个script文件
functionshow_name() {                                                       //定义一个函数
echo "今天是$1, 你是$2,来自$3"
}
name="$1"// 三个变量设定
ip="192.168.0.9"
today=`date +%F`
if [ $# !=1 ]; then//if判断语法结构
echo "Usage: ./$0 [使用者名称]"
exit
fi
show_name "$today" "$name" "$ip"// 调用show_name函数
sleep 5// 暂停5秒
echo//输出空行
echo "bye-bye :)"
主意事项:
1、脚本文件第一行要指定所用的shell
例如: #!/bin/bash
2、给脚本添加可执行权限
例:
[root@localhost ~]# vim bb
#!/bin/bash
date
who
[root@localhost ~]# ./bb
2011年 05月 29日 星期日 08:51:30 EDT
root     :0           2011-05-29 08:32
root     pts/0        2011-05-29 08:33 (:0.0)
[root@localhost ~]#
检查script语法
[root@localhost ~]# bash -v aa
[root@localhost ~]# bash -n aa
[root@localhost ~]# bash -x aa
执行bash script:
1、切换到脚本所在的目录
./scriptname 或 bash scriptname
2、直接输入脚本所在绝对路径
3.   绝对路径
8.4 反引号``
反引号允许将shell命令的输出直接赋值给变量
例:
[root@localhost ~]# test=`date`直接把date的结果赋给test
[root@localhost ~]# echo $test
2011年 07月 20日 星期三 20:56:10 EDT
每天23点48分以当天的日期命名备份一次messages日志文件
[root@localhost ~]# cat log
#!/bin/bash
today=`date +%y%m%d`
cat /var/log/messages > messages.$today
[root@localhost ~]# chmod u+x log
[root@localhost ~]# crontab -e
58 23 * * *./log
8.7 数学计算
1、expr命令—限制较多
[root@localhost ~]# expr 12 + 2          注意符号和数字直接要有空格
14
[root@localhost ~]# expr 12 * 2
expr: 语法错误
[root@localhost ~]# expr 12 \* 2       遇到通配字符要先转义
24
[root@localhost ~]# expr 12 / 2
6
[root@localhost ~]#
2使用括号—推荐使用
例:
[root@localhost ~]# cc=$[1 * 4]
[root@localhost ~]# echo $cc
4
[root@localhost ~]# cat count
#!/bin/bash
var1=$[50 * 2]
var2=45
var3=$[$var1 / $var2]
echo the final result is $var3
[root@localhost ~]# ./count
the final result is 2
[root@localhost ~]#
bash shell   只支持整数算法,对于实际运算是个较大的限制,可以用内置的bashbc)计算器解决
bc计算器可以识别:
数字(整型和浮点型)
变量(简单的变量和数组)
注释(以英镑符号开始的行或C语言的/**/对)
表达式
编程语句(例如if-then)
函数
例:
简单的加减:
[root@localhost ~]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2+2
4
2.5*2
5.0
3.14159*(20+192)
666.01708
quit
[root@localhost ~]#
识别变量:
[root@localhost ~]# bc -q
var1=10
var2=2
var1*2
20
var2=var1-9
print var2
quit
[root@localhost ~]#
控制小数点:
[root@localhost ~]# bc -q
3/5
0
scale=3
3/5
.600
quit
在脚本中使用bc
[root@localhost ~]# cat bc
#!/bin/bash
var1=`echo "scale=4;3.14/5" | bc`
echo the answer is $var1
[root@localhost ~]# ./bc
the answer is .6280
[root@localhost ~]#