2017-05-05 71 views
-1

我想將mkdir -p命令輸出存儲在變量中。將mkdir -p命令輸出到變量中

爲前: -

HOME=/opt 
MY_DIR=`mkdir -p $HOME/mydir` 

所以echo $MY_DIR應該顯示/opt/mydir

,但我沒有得到期望的輸出,任何人都可以請幫助?

+1

'mkdir'命令不提供輸出。既然你已經知道你想創建什麼目錄,爲什麼不把它存儲在一個變量中,就像你用它調用'mkdir'一樣? –

+2

'mkdir -p'沒有提供任何文本輸出,這是調用'MY_DIR = $(mkdir -p $ HOME/mydir)'來執行所需操作所需的。你應該做'MY_DIR =「$ HOME/mydir」; mkdir -p「$ MY_DIR」'或類似的東西。 – Petesh

+0

...作爲旁邊 - 所有大寫變量名稱由POSIX指定的約定用於對shell或操作系統有意義的變量,而至少有一個小寫字符的變量保留給應用程序使用 - 請參閱http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html第四段。 –

回答

1

mkdir -p沒有輸出(也就是說,它沒有寫入標準輸出)。

正確的行爲是之前形成你的目錄名你把它傳遞給mkdir

my_dir="$HOME/mydir" 
mkdir -p -- "$my_dir" 

如果你想從mkdir捕捉標準錯誤,重定向到您的命令替換內標準輸出:

my_dir="$HOME/mydir" 
mkdir_msgs=$(mkdir -p -- "$my_dir" 2>&1) 
printf 'mkdir wrote the following messages: <%s>\n' "$mkdir_msgs"