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]#
相關文章
相關標籤/搜索