執行 shell script

  1. 寫好 shell script,例如:newfind.sh,內容只有一行 find 指令,找目錄 /usr 內大於 30M 的檔案。
    [root@kvm8 ~]# vi newfind.sh
    [root@kvm8 ~]# cat newfind.sh
    find /usr/ -size +30M
    
  2. 直接使用 sh 或 bash 執行腳本 newfind.sh。
    [root@kvm8 ~]# find /usr/ -size +30M
    /usr/lib/sysimage/rpm/rpmdb.sqlite
    /usr/lib64/libLLVM.so.19.1
    /usr/lib64/libgallium-24.2.8.so
    /usr/share/fonts/google-noto-sans-mono-cjk-vf-fonts/NotoSansMonoCJK-VF.ttc
    /usr/share/fonts/google-noto-sans-cjk-vf-fonts/NotoSansCJK-VF.ttc
    /usr/share/fonts/google-noto-serif-cjk-vf-fonts/NotoSerifCJK-VF.ttc
    

  3. 要獨立執行 newfind.sh 腳本,必須先增加其可執行屬性再執行。
    [root@kvm8 ~]# ./newfind.sh
    -bash: ./newfind.sh: Permission denied
    [root@kvm8 ~]# chmod +x ./newfind.sh
    [root@kvm8 ~]# ./newfind.sh
    /usr/lib/sysimage/rpm/rpmdb.sqlite
    /usr/lib64/libLLVM.so.19.1
    /usr/lib64/libgallium-24.2.8.so
    /usr/share/fonts/google-noto-sans-mono-cjk-vf-fonts/NotoSansMonoCJK-VF.ttc
    /usr/share/fonts/google-noto-sans-cjk-vf-fonts/NotoSansCJK-VF.ttc
    /usr/share/fonts/google-noto-serif-cjk-vf-fonts/NotoSerifCJK-VF.ttc
    
  4. newfind.sh 增加可執行的屬性後,執行結果沒問題,是因在 linux 的文字界面預設是使用 /bin/bash 執行腳本,如果是其他直譯程式,例如:python, curl 等腳本,也直接執行一定會出錯。
  5. 腳本的 第一行「井號」及「驚嘆號」"#!" 組成的字元組為 shebang (hashbang),其後面接的內容是直譯器指令。可以宣告此腳本使用的直譯器指令,就可以正確的直譯器指令執行腳本,
    [root@kvm8 ~]# vi newfind.sh
    [root@kvm8 ~]# cat newfind.sh
    #!/bin/bash
    find /usr/ -size +30M