Bash cd。。一无所获

Bash cd。。一无所获,bash,directory,parent,cd,Bash,Directory,Parent,Cd,我有一个Bash脚本: src="/home/xubuntu/Documents" mkdir -p "$src/folder1" src="$src/folder1" # Do something printf "SRC IS: $src\n" src=`cd ..` # RETURN TO PARENT DIRECTORY printf "SRC IS: $src\n" 基本上,我想创建一个新文件夹,然后在文件夹内执行一些操作,完成后,我想返回父目录Documents。然而,出于某种原

我有一个Bash脚本:

src="/home/xubuntu/Documents"
mkdir -p "$src/folder1"
src="$src/folder1"

# Do something

printf "SRC IS: $src\n"
src=`cd ..` # RETURN TO PARENT DIRECTORY
printf "SRC IS: $src\n"
基本上,我想创建一个新文件夹,然后在文件夹内执行一些操作,完成后,我想返回父目录
Documents
。然而,出于某种原因,
src=`cd..`
不返回任何内容

SRC IS: /home/xubuntu/Documents
SRC IS: 

知道为什么吗?

cd只是更改目录,而不是显示它;这是通过pwd实现的;i、 e

cd ..
src=`pwd` 

#or slightly faster
src=$PWD

cd只是更改目录,而不是显示它;这是通过pwd实现的;i、 e

cd ..
src=`pwd` 

#or slightly faster
src=$PWD

您可以访问父级:

src=$(cd ..&&pwd)
更好,无需使用
cd

src=${src%/*} # src is the parent directory

您可以访问父级:

src=$(cd ..&&pwd)
更好,无需使用
cd

src=${src%/*} # src is the parent directory

发生的情况是,您正在将命令“cd..”的输出分配给src 这(正如您在命令行中所看到的)什么都不是。使用readlink-f完成您需要的任务

您想做的是:

src="/home/xubuntu/Documents"
mkdir -p "$src/folder1"
src="$src/folder1"

# Do something

printf "SRC IS: $src\n"
src=`readlink -f $src/..` # RETURN TO PARENT DIRECTORY
printf "SRC IS: $src\n"

我假设这就是您想要做的,返回src它的父文件夹。

发生的是您正在将命令“cd..”的输出分配给src 这(正如您在命令行中所看到的)什么都不是。使用readlink-f完成您需要的任务

您想做的是:

src="/home/xubuntu/Documents"
mkdir -p "$src/folder1"
src="$src/folder1"

# Do something

printf "SRC IS: $src\n"
src=`readlink -f $src/..` # RETURN TO PARENT DIRECTORY
printf "SRC IS: $src\n"

我想这就是你想要做的,返回src-it的父文件夹。

在这种情况下,
hello
做什么?谢谢伙计,使用第二种解决方案工作得很有魅力:)在这种情况下,
hello
做什么?谢谢伙计,使用第二种解决方案时效果很好:)目录中的更改是由backticks创建的shell的本地更改
cd
本身没有输出,这就是为什么
src
是空的。目录中的更改是由backticks创建的shell的本地更改
cd
本身没有输出,这就是
src
为空的原因。