內工作,我希望得到的日期時間,並作出如此命名,然後cd
這個目錄的目錄。cd命令不bash腳本
這是我的bash腳本:
t=$(date +%F-%H%M%S)
mkdir $t
cd $t
,但它不完全工作。
它創建了一個目錄,但cd
命令不起作用。
截圖:
內工作,我希望得到的日期時間,並作出如此命名,然後cd
這個目錄的目錄。cd命令不bash腳本
這是我的bash腳本:
t=$(date +%F-%H%M%S)
mkdir $t
cd $t
,但它不完全工作。
它創建了一個目錄,但cd
命令不起作用。
截圖:
你正在運行一個子shell腳本。
與腳本中運行cd
的問題是,它會創建該目錄啓動子shell。當腳本結束時,你的subshell也是如此,當你運行腳本時,你又回到了你開始的地方。所以它是這樣的:
你可以證明cd
在腳本中起作用,並且當你通過留下標記來執行你的腳本時你在那個目錄中。
t=$(date +%F-%H%M%S)
mkdir $t
cd $t
echo "I'm here" > inside.txt
現在當腳本結束時,您會回到開始腳本的位置。但是如果您將cd
添加到目錄中,並運行ls
,則會看到您創建的文件。
爲@Dawid Ferenczy指出,實際上你可以source
這個腳本到當前的外殼,而不是運行一個子shell,如:
source test.sh
這取決於你如何執行腳本。如果你使用'source',它將使用當前的shell,腳本結束後你將進入新創建的目錄。 –
@DawidFerenczy看看OP的屏幕截圖,他們正在用'sh'運行它# –
你實際上完成了問題的回答。但是你應該使用雙引號。 Hes以root身份測試shell腳本,不能太小心。 – Argonauts
是什麼意思「它不工作」?它完美的作品。如果您需要任何幫助,請描述它的實際行爲。 「它不工作」是無稽之談。 –
最後一行「cd」命令不起作用,運行此腳本之前是在主文件夾「〜」中,並在主文件夾中運行此腳本。 – KBKai
再次。它工作得很好。除非你描述它的真實行爲(錯誤消息等),否則沒有人能夠幫助你。正如我寫的「它不工作」是一個垃圾* t。 –