Shell 運(yùn)行shell腳本的多種方法
詳情地址:? https://www.xiaobuteach.com/shell/base/run-method.html?from=bili
Shell 運(yùn)行shell腳本的多種方法
運(yùn)行shell腳本文件可通過兩類方法。
方法1:bash執(zhí)行
語法
sh 文件
文件可使用相對(duì)路徑或絕對(duì)路徑。
示例
sh 01hello.sh
等價(jià)寫法
sh /practise/c01base/01hello.sh

其它等價(jià)寫法
/bin/sh 文件
為sh命令帶上路徑的完整寫法。
/bin/bash 文件
sh為/bin/bash的鏈接,直接調(diào)用的寫法。
bash 文件
會(huì)自動(dòng)從/bin目錄下找到bash程序。
上述各種寫法最終調(diào)用/bin/bash程序來執(zhí)行腳本。
推薦使用sh,最簡(jiǎn)單。
方式2:直接執(zhí)行腳本文本
步驟1:設(shè)置文件為可執(zhí)行
chmod +x 01-hello.sh
+x 表示文件添加可執(zhí)行權(quán)限。
步驟2:運(yùn)行文件
./文件名
如果文件名在當(dāng)前目錄,前面需要加./ 。

FAQ:報(bào)錯(cuò)
-bash: ./01-hello.sh: Permission denied?
程序如果沒有設(shè)為可執(zhí)行,會(huì)報(bào)這個(gè)錯(cuò)誤。

FAQ:為什么不能直接用文件名,前面需要加./ ?
直接用文件名只會(huì)從/bin等系統(tǒng)目錄找系統(tǒng)命令。習(xí)慣這個(gè)規(guī)則就好。
bash: 01-hello.sh: command not found...

小提示
當(dāng)文件不可執(zhí)行時(shí),文件名我們無法按TAB自動(dòng)完成。
FAQ:為什么執(zhí)行時(shí)命令可以不用解釋器?
因?yàn)槲覀冊(cè)谠次募ㄟ^#!/bin/bash指定了解釋器,即使不指定,系統(tǒng)可能也會(huì)使用默認(rèn)解釋器。為保證代碼的健壯性,要求加上此句。
通過絕對(duì)路徑執(zhí)行運(yùn)行文件
sh 絕對(duì)路徑
例
/practise/c01base/01-hello.sh
這里不需要./, ./只有在當(dāng)前目錄的文件才需要。

編碼建議
如果一個(gè)文件頻繁編輯代碼進(jìn)行測(cè)試,可以開兩個(gè)連接,一個(gè)連接一直在vim界面,:w保存文件;另一個(gè)連接運(yùn)行sh查看效果。