内工作,我希望得到的日期时间,并作出如此命名,然后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。 –