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腳本結構和執行

  1. 建立一個shell文件夾,並切入到文件夾中
[root@hanfeng ~]# mkdir shell
[root@hanfeng ~]# cd shell/
[root@hanfeng shell]#
  1. 寫shell腳本
  • #! /bin/bash //第一行必須這麼寫,固定格式,做用就是腳本如果在當臺機器上去執行,能夠不加這一行也不要緊,由於它知道下面若干條的命令能在這臺機器上去執行,去解析
[root@hanfeng shell]# vi 01.sh

#! /bin/bash   	//固定格式
echo "123"
w
ls
保存退出
  1. 執行腳本——>sh 01.sh
[root@hanfeng shell]# sh 01.sh
123
 22:45:12 up 14 min,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     22:32    0.00s  0.05s  0.03s w
01.sh
[root@hanfeng shell]#
  1. 在當前終端裏,把01.sh中的#! /bin/bash 去掉後在執行腳本,會看到獲得的結果相同,不會出現任何的問題,這就說明這臺機器是能識別裏面一條一條的命令的,去運行這裏面的命令;但如果換一臺機器,就不必定能執行了
  2. 在第一行,文件頭指定 #!/bin/bash ,接下來要運行的命令是經過哪個解釋器來操做的,一般都是 /bin/bash 解釋器來執行的
  3. 給01.sh文件一個執行權限
[root@hanfeng shell]# chmod a+x 01.sh
[root@hanfeng shell]#

7執行shell腳本 ./01.sh 能這樣執行,說明這些命令被解析了,被/bin/bash認識了shell

[root@hanfeng shell]# ./01.sh
123
 23:11:21 up 41 min,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     22:32    1.00s  0.05s  0.00s /bin/bash ./01.sh
01.sh
[root@hanfeng shell]#
  1. /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]#
  1. 01.sh文件內容就是被/bin/bash所解析的
  2. 若沒有 /bin/bash ,可使用 /bin/bash 01.sh去執行
[root@hanfeng shell]# /bin/bash 01.sh
123
 23:21:43 up 51 min,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     22:32    7.00s  0.03s  0.00s w
01.sh
[root@hanfeng shell]#
  1. 如果在shell腳本中在寫入第二遍 #號開頭的行, 就表示解釋說明的做用
  2. 腳本的通常都是以.sh結尾,是爲了區分這是一個shell腳本,不然須要打開這個文件,才知道是shell腳本
  3. 運行shell腳本有兩種方法
  • 一種是sh 01.sh運行shell腳本
  • 另外一種方法
    • 先 chmod a+x 1.sh 給文件加一個執行權限
    • 再 ./1.sh 去執行
      • 這裏的 ./ 就至關於一個相對路徑,相對當前一個路徑
      • 也可使用絕對路徑去執行腳本 /root/shell/01.sh ,其實就是找到這個文件去執行
[root@hanfeng shell]# /root/shell/01.sh
123
 23:45:02 up  1:14,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     22:32    6.00s  0.03s  0.00s w
01.sh
[root@hanfeng shell]#
  1. 查看腳本執行過程 sh -x 01.sh 或者bash -x 01.sh
  • -x,就是顯示腳本執行的過程
  • 每個加號,表示一個操做步驟
[root@hanfeng shell]# sh -x 01.sh
+ echo 123
123
+ w
 23:47:35 up  1:17,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     22:32    7.00s  0.03s  0.00s sh -x 01.sh
+ ls
01.sh
[root@hanfeng shell]#
  1. 查看腳本是否有錯誤 sh -n 01.sh
  • 如果沒有任何的輸出,那麼腳本則沒有錯誤
  • sh -n 01.sh命令是檢測是否存在語法錯誤
[root@hanfeng shell]# sh -n 01.sh
[root@hanfeng shell]#
相關文章
相關標籤/搜索