Bash 将目录定义为变量

Bash 将目录定义为变量,bash,for-loop,Bash,For Loop,我有一个简单的问题,关于为文件夹定义变量,并用它进行一些操作 在我的示例中,我在脚本的开头将workdir定义为dirr 然后我在$dirr的一些子目录中进行一些循环,在每个循环结束时,我需要返回到./${dir},它等于双cd(cd..cd..) 问题是cd。。光盘方法工作正常,但cd$dirr不起作用。1) 这里应该修复什么?2) 如何获取$dirr的路径(echo${dirr}也不起作用) 谢谢你的帮助 James您可以使用pushd和popd: pushd /tmp #

我有一个简单的问题,关于为文件夹定义变量,并用它进行一些操作

在我的示例中,我在脚本的开头将workdir定义为dirr 然后我在$dirr的一些子目录中进行一些循环,在每个循环结束时,我需要返回到./${dir},它等于双cd(cd..cd..)

问题是cd。。光盘方法工作正常,但cd$dirr不起作用。1) 这里应该修复什么?2) 如何获取$dirr的路径(echo${dirr}也不起作用)

谢谢你的帮助


James

您可以使用
pushd
popd

pushd /tmp         # Go to /tmp, but remember where we were
...
do something
...
popd               # Return wherever we were

变量赋值中的空格是否在实际代码中?@user000001这可能是问题所在@JamesStarlight如果
echo${dirr}
不起作用,则应提醒您尚未设置它。您没有为
dirr
赋值;您正在其环境中以空值
dirr
运行
/home/gleb/Documents/script
。请将set-o nounset添加到脚本中,以便在引用未设置变量时终止。xz=/tmp;cd$xz;做点什么;它也能用吗?
pushd /tmp         # Go to /tmp, but remember where we were
...
do something
...
popd               # Return wherever we were