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
前面的命令成功执行,第三条命令不成功
使用符号&&时,只有在前面的命令成功执行后,后面的命令才会继续执行