2017-05-05 10 views
-1

mkdir -pコマンド出力を変数に保存したいと思います。 EX用変数に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

... aside - all-caps変数名は、POSIX指定の規則によって、シェルやオペレーティングシステムの意味を持つ変数に対して使用されますが、少なくとも1つの小文字の変数は、アプリケーションの使用のために予約されています。 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html第4段落を参照してください。 –

答えて

1

mkdir -pには出力がありません(つまり、stdoutに何も書き込まない)。

正しい行動はあなたがmkdirに渡すする前に、ディレクトリ名を形成することである。

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

あなたはmkdirからstderrのをキャプチャしたい場合は、あなたのコマンド置換の内部標準出力にリダイレクト:

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