2017-10-12 74 views
0

遞增我有以下bash腳本(myscript.sh):

#!/bin/bash 
$(echo $0) 

現在:採購myscript.sh之前,$ SHLVL是2.採購完畢,是3.爲什麼? 回聲後不應該命令評估退出嗎?

謝謝!

+0

你的問題不清楚。你怎麼打電話給你的腳本?請顯示您用來調用腳本的命令,以便我們看到輸入和輸出。 – EJK

+0

另外,你的腳本的目的是什麼? '$ 0'是啓動腳本的命令。將該命令放在'$()'內部會導致該命令被執行,這將導致無限遞歸。 – EJK

回答

0

當您在bash中輸入腳本時,$0將擴展爲bash(或至少,shell的bash的名稱已作爲起始名稱)。因此,$(echo $0)首先擴展爲$(echo bash),計算結果爲bash,然後將其確定爲要運行的命令的名稱,以便啓動新的外殼實例。您可以通過運行

echo foo; source myscript.sh; echo bar 

先觀察築巢,你會看到字符串foo印刷,那麼你會在新的shell提示。輸入exit退出它,然後您會看到bar最終完成您的原始命令列表打印。

相關問題