2013年3月14日 星期四 晴 12—零下2度

一、给执行权限的脚本

1、编辑简单脚本

[root@desktop7 ~]# vim hello.sh

#!/bin/bash

#zhe shi wo men de di yi ge jiao ben

echo 'Hello,你好。bash shell!'

2、赋予执行权限

[root@desktop7 ~]# chmod a+x hello.sh    #其中a+x等同于+x

3、执行脚本

[root@desktop7 ~]# ./hello.sh

Hello,你好。bash shell!

因为文件建在根目录下,所以可以直接执行

其他文件

#cd 脚本目录;./filename.sh                #分号(;)隔开,执行多条命令

或者是

#/root/filename.sh                       #绝对路径      

二、 无执行权限的脚本

1、bash+脚本文件名(filename)

[root@desktop7 ~]# ./hello.sh             #此时脚本文件中#!/bin/bash的说明已经无意义

bash: ./hello.sh: Permission denied

[root@desktop7 ~]# bash hello.sh

Hello,你好。bash shell!

[root@desktop7 ~]#

2、sh+脚本文件名(filename)

[root@desktop7 ~]# sh hello.sh

Hello,你好。bash shell!

[root@desktop7 ~]#

3、. filename(点+空格+文件名)

[root@desktop7 ~]# . hello.sh            #点(.)为执行程序

Hello,你好。bash shell!

[root@desktop7 ~]#

4、source filename

[root@desktop7 ~]# source hello.sh

Hello,你好。bash shell!

[root@desktop7 ~]#

三、脚本排错

1、编辑脚本文件,加入(-x)

[root@desktop7 ~]# vim hello.sh

#!/bin/bash -x

#zhe shi wo men de di yi ge jiao ben

echo 'Hello,你好。bash shell!'

赋予执行权限

[root@desktop7 ~]# chmod a+x hello.sh

显示有哪些操作显示哪些结果

[root@desktop7 ~]# ./hello.sh

+ echo 'Hello,你好。bash shell!'

Hello,你好。bash shell!

2、较详细显示效果

[root@desktop7 ~]# vim jiafa.sh

#!/bin/bash -x

a=3

b=5

echo $a $b

~          

[root@desktop7 ~]# chmod a+x jiafa.sh

[root@desktop7 ~]# ./jiafa.sh

+ a=3

+ b=5

+ echo 3 5

3 5

[root@desktop7 ~]#

没有(-x)结果

[root@desktop7 ~]# vim jiafa.sh

#!/bin/bash

a=3

b=5

echo $a $b

[root@desktop7 ~]# ./jiafa.sh

3 5

[root@desktop7 ~]#

四、多条命令的选择

1、多选一执行

(1)编辑文件

[root@desktop7 ~]# vim wrong.sh

#!/bin/bash

cd /root/Dektop/door ||mkdir /root/desk ||touch zhuozi

(2)赋予权限

[root@desktop7 ~]# chmod a+x wrong.sh

(3)执行

 

[root@desktop7 ~]# ./wrong.txt

./wrong.sh: line 2: cd: /root/Dektop/door: No such file or directory

(4)验证

[root@desktop7 ~]# ls

anaconda-ks.cfg  Desktop   html.txt     install.log.syslog  jiafa.sh

desk(#新创建的目录)hello.sh  install.log  install-vserver     wrong.sh

[root@desktop7 ~]#

||表示前面的命令执行不成功,后面的命令才会执行。已经有执行成功的命令,则后面的命令不会执行

2、多条命令全部执行

(1)编辑文件

[root@desktop7 ~]# vim wrong2.sh

#!/bin/bash

cd /root/Dektop/door;mkdir /root/desk2/;touch yizi

(2)赋予权限

[root@desktop7 ~]# chmod a+x wrong2.sh

 

(3)执行脚本

                                                

[root@desktop7 ~]# ./wrong2.sh

./wrong2.sh: line 2: cd: /root/Dektop/door: No such file or directory

[root@desktop7 ~]#

(4)验证

[root@desktop7 ~]# ls

anaconda-ks.cfg  Desktop   install.log         jiafa.sh    yizi(#新建文件)

desk             hello.sh  install.log.syslog  wrong2.sh  zhuozi

desk2(#新建目录)  html.txt  install-vserver     wrong.sh

[root@desktop7 ~]#

后面两条命令都执行,即便第一条不成功

采用分号(;)隔开多条命令时,不论前面的命令是否成功,不影响后面命令的执行

3、成功才继续

(1)编辑文本

[root@desktop7 ~]# vim wrong3.sh

#!/bin/bash

mkdir /root/desk10/&&touch banana&&mkdir /root/Desktop/lvyou/&&cd /root/Desktop/lvyou

(2)赋予权限

[root@desktop7 ~]# chmod a+x wrong3.sh

[root@desktop7 ~]#

(3)执行脚本

[root@desktop7 ~]# source wrong3.sh              #使用source成功显示执行结果

(4)验证

[root@desktop7 lvyou]# pwd

/root/Desktop/lvyou

[root@desktop7 lvyou]#

[root@desktop7 lvyou]# cd

[root@desktop7 ~]# ls

anaconda-ks.cfg  desk4        install.log.syslog  pingguo     wrong3.sh

banana(#新增)    Desktop      install-vserver     wrong3.txt

desk10(#新增)    install.log  mbox                

将后两条命令颠倒

编辑文件

[root@desktop7 ~]# vim wrong4.sh

#!/bin/bash

mkdir /root/desk8 && touch pear &&cd /root/Desktop/tachun && mkdir /root/Desktop/tachun

     

赋予权限

[root@desktop8 ~]# chmod a+x wrong4.sh

用source执行脚本

 

[root@desktop8 ~]# source wrong4.sh

bash: cd: /root/Desktop/chunyou: No such file or directory

验证其他命令执行情况

[root@desktop8 ~]# ls

anaconda-ks.cfg  Desktop      install.log.syslog  orange    yuan.sh

desk5            install.log  install-vserver     wrong4.sh

前面的命令成功执行,第三条命令不成功

使用符号&&时,只有在前面的命令成功执行后,后面的命令才会继续执行