我目前正在使用MIT missing semester lecture 2。
练习2使我们将函数marco.sh和polo.sh写入“ polo”回到执行marco的目录。我为此编写了两个简单的脚本,但是polo.sh不会cd
进入我保存的目录。
#!/bin/bash
currentDirectory=$(pwd)
echo "current directory is $currentDirectory"
echo "$currentDirectory" > /tmp/missing/marcoDirectory.txt
(由于bash无法通过polo识别currentDirectory变量,因此必须将目录保存在.txt文件中。再次,这是一种练习,我并不为此感到骄傲)
#!/bin/bash
next=$(cat /tmp/missing/marcoDirectory.txt)
echo "changing directory to $next"
cd $next
事实是命令cd
似乎无法识别它必须执行。如果我尝试cd
在其他地方,它也会失败。
我应该如何解决cd
问题?
答案 0 :(得分:0)
marco.sh 可能是一个函数:
function marco(){
currentDirectory=$(pwd)
echo "Current directory is $currentDirectory"
echo "$currentDirectory" > /tmp/missing/marcoDirectory.txt
}
然后您可以source marco.sh
并运行marco.sh
。
polo.sh 可能像这样:
function polo(){
next=$(cat /tmp/missing/marcoDirectory.txt)
echo "Changing directory to $next"
cd "$next"
}
然后将其重定向到marco目录。
请注意,next
变量应为“”。