2013-05-28 51 views
0

我有一個bash腳本:猛砸CD ..沒有返回

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: 

任何想法爲什麼?

+0

目錄中的更改位於由反引號創建的shell的本地位置。 'cd'本身沒有輸出,這就是爲什麼'src'是空的。 – chepner

回答

3

您可以訪問父:

src=$(cd ..&&pwd) 

好得多,而無需使用cd

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

在這種情況下'hello'做了什麼? – Travv92

+0

@ Travv92,答案已更新。 – tarrsalah

+0

感謝哥們,用第二個解決方案像魅力一樣工作:) – Travv92

2

cd只是改變目錄,不顯示它;這是用pwd完成的;即

cd .. 
src=`pwd` 

#or slightly faster 
src=$PWD 
0

正在發生的事情是你指定從命令的輸出「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。