20.2 shell脚本结构和执行

shell脚本结构和执行

  • 开头须要加#!/bin/bash
  • 以#开头的行做为解释说明
  • 脚本的名字以.sh结尾,用于区分这是一个shell脚本
  • 执行方法有两种
  • chmod +x 1.sh; ./1.sh
  • bash 1.sh
  • 查看脚本执行过程 bash -x 1.sh
  • 查看脚本是否语法错误 bash -n 1.sh

shell脚本结构和执行

一、建立一个shell文件夹,并切入到文件夹中shell

[root@xuexi-001 ~]# mkdir shell
[root@xuexi-001 ~]# cd shell/
[root@xuexi-001 shell]#

二、写shell脚本bash

  • #! /bin/bash //第一行必须这么写,固定格式,做用就是脚本如果在当台机器上去执行,能够不加这一行也不要紧,由于它知道下面若干条的命令能在这台机器上去执行,去解析
[root@xuexi-001 shell]# vi 01.sh
#! /bin/bash   	//固定格式
echo "123"
w
ls
保存退出

三、执行脚本——>sh 01.shcode

[root@xuexi-001 shell]# sh 01.sh 
123
 20:57:28 up 19 min,  2 users,  load average: 0.00, 0.01, 0.06
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      20:40   17:28   0.02s  0.02s -bash
root     pts/0    192.168.5.1      20:40    0.00s  0.01s  0.00s sh 01.sh
01.sh

四、在当前终端里,把01.sh中的#! /bin/bash 去掉后在执行脚本,会看到获得的结果相同,不会出现任何的问题,这就说明这台机器是能识别里面一条一条的命令的,去运行这里面的命令;但如果换一台机器,就不必定能执行了终端

五、在第一行,文件头指定 #!/bin/bash ,接下来要运行的命令是经过哪个解释器来操做的,一般都是 /bin/bash 解释器来执行的权限

六、给01.sh文件一个执行权限语法

[root@xuexi-001 shell]# chmod a+x 01.sh

七、执行shell脚本 ./01.sh 能这样执行,说明这些命令被解析了,被/bin/bash认识了方法

[root@xuexi-001 shell]# ./01.sh 
123
 21:00:26 up 22 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      20:40   20:26   0.02s  0.02s -bash
root     pts/0    192.168.5.1      20:40    2.00s  0.02s  0.00s /bin/bash ./01
01.sh

八、/bin/bash也是一条命令, /bin/bash 和 /bin/sh 是同一个文件脚本

[root@hanfeng shell]# ls -l /bin/bash
-rwxr-xr-x. 1 root root 960368 6月  10 2014 /bin/bash
[root@hanfeng shell]# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 10月 21 00:47 /bin/sh -> bash
[root@hanfeng shell]#

九、01.sh文件内容就是被/bin/bash所解析的di

十、若没有 /bin/bash ,能够使用 /bin/bash 01.sh去执行文件

[root@xuexi-001 shell]# /bin/bash 01.sh 
123
 21:01:05 up 22 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      20:40   21:05   0.02s  0.02s -bash
root     pts/0    192.168.5.1      20:40    1.00s  0.02s  0.00s /bin/bash 01.s
01.sh

十一、如果在shell脚本中在写入第二遍 #号开头的行, 就表示解释说明的做用

十二、脚本的通常都是以.sh结尾,是为了区分这是一个shell脚本,不然须要打开这个文件,才知道是shell脚本

1三、运行shell脚本有两种方法

  • 一种是sh 01.sh运行shell脚本
  • 另外一种方法
  • 先 chmod a+x 1.sh 给文件加一个执行权限
  • 再 ./1.sh 去执行
  • 这里的 ./ 就至关于一个相对路径,相对当前一个路径
  • 也能够使用绝对路径去执行脚本 /root/shell/01.sh ,其实就是找到这个文件去执行
[root@xuexi-001 shell]# /root/shell/01.sh 
123
 21:01:38 up 23 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      20:40   21:38   0.02s  0.02s -bash
root     pts/0    192.168.5.1      20:40    2.00s  0.02s  0.00s /bin/bash /roo
01.sh

1四、查看脚本执行过程 sh -x 01.sh 或者bash -x 01.sh

  • -x,就是显示脚本执行的过程
  • 每个加号,表示一个操做步骤
[root@xuexi-001 shell]# sh -x 01.sh 
+ echo 123
123
+ w
 21:02:07 up 23 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      20:40   22:07   0.02s  0.02s -bash
root     pts/0    192.168.5.1      20:40    7.00s  0.02s  0.00s w
+ ls
01.sh

1五、查看脚本是否有错误 sh -n 01.sh

  • 如果没有任何的输出,那么脚本则没有错误
  • sh -n 01.sh命令是检测是否存在语法错误
[root@xuexi-001 shell]# sh -n 01.sh 
[root@xuexi-001 shell]#
相关文章
相关标签/搜索