執行 shell script

  1. 寫好 shell script,例如:newfind.sh,內容只有一行 find 指令,找目錄 /usr 內大於 10M 的檔案。
    [root@kvm8 ~]# vim newfind.sh
    [root@kvm8 ~]# cat newfind.sh
    find /usr/ -size +10M
    
  2. 直接使用 sh 或 bash 執行腳本 newfind.sh。
    [root@kvm8 ~]# bash newfind.sh
    /usr/lib64/libicudata.so.60.3
    /usr/lib64/ceph/libceph-common.so.0
    /usr/lib64/libmozjs-60.so.0.0.0
    /usr/bin/podman
    /usr/libexec/cni/dhcp
    /usr/share/GeoIP/GeoLite2-City.mmdb
    

  3. 要獨立執行 newfind.sh 腳本,必須先增加其可執行屬性再執行。
    [root@kvm8 ~]# ./newfind.sh
    -bash: ./newfind.sh: Permission denied
    [root@kvm8 ~]# chmod +x ./newfind.sh
    [root@kvm8 ~]# ./newfind.sh
    /usr/lib64/libicudata.so.60.3
    /usr/lib64/ceph/libceph-common.so.0
    /usr/lib64/libmozjs-60.so.0.0.0
    /usr/bin/podman
    /usr/libexec/cni/dhcp
    /usr/share/GeoIP/GeoLite2-City.mmdb
    
  4. newfind.sh 增加可執行的屬性後,執行結果沒問題,是因在 linux 的文字界面預設是使用 /bin/bash 執行腳本,如果是其他直譯程式,例如:python, curl 等腳本,也直接執行一定會出錯。
  5. 腳本的第一行井號及驚嘆號#! 組成的字元組為 shebang (hashbang),其後面接的內容是直譯器指令。可以宣告此腳本使用的直譯器指令,就可以正確的直譯器指令執行腳本,
    [root@kvm8 ~]# vim newfind.sh
    [root@kvm8 ~]# cat newfind.sh
    #!/bin/bash
    find /usr/ -size +10M