2017-05-05 136 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"