2 回答

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
在ubuntu中,sh只是bash的一個(gè)鏈接,執(zhí)行的程序都是一樣的,命令解釋器是一樣的。
但
bash xxx.sh和
./xxx.sh和
sh xxx.sh
還是有不同的,bash xxx.sh和sh xxx.sh都已經(jīng)是直接執(zhí)行命令,腳本程序作為這個(gè)命令的參數(shù),不存在可行性權(quán)限的問題,而./xxx.sh則必須具有可執(zhí)行權(quán)限,在部分自動(dòng)化的腳本中出現(xiàn)像./xxx.sh這個(gè)的語句可能會(huì)出錯(cuò)。
然后,三條命令本身的語句不一樣,部分腳本程序在執(zhí)行時(shí)喜歡檢測(cè)一下命令名本身([ "$0"]),對(duì)不同的命令會(huì)作出不同的反應(yīng),這個(gè)是取決與腳本本身的。
我沒看過樓主的腳本,猜測(cè),可能在xxx.sh這個(gè)腳本中有一條語句對(duì)命令名進(jìn)行檢測(cè),然后進(jìn)行條件跳轉(zhuǎn)。
if [ "$0" = "sh xxx.sh" ]
then
......
fi

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
.是表示在當(dāng)前shell中執(zhí)行腳本。所以會(huì)在當(dāng)前的shell界面看到提示。
#!/usr/bin/bash 則是另開了一個(gè)shell執(zhí)行腳本,所以看不到提示。
至于另開腳本是否會(huì)覆蓋還沒有測(cè)試過。
但是考慮可能會(huì)覆蓋的情況 ,因該編寫一個(gè)if 【】進(jìn)行文件是否存在的測(cè)試。如果文件存在,進(jìn)行判斷是跳過還是覆蓋。
否則文件不存在,則直接復(fù)制。
添加回答
舉報(bào)