Bash cd。。一无所获
我有一个Bash脚本: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。然而,出于某种原
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
为空的原因。