2011-12-31 15 views
0

私はこれがあります。cdの戻り値を保存するには?

cd $dir 

if[ $? -eq 0 ]; then ... 
else echo "The directory doesn't exist"; exit -1; 
fi 

そして、何が欲しいのCDが(1行目に)エラーを返した場合、エラーがシェルによって示されていないということです。私は、私が書いたメッセージを見せたいだけです。 私はしようとしました:

ret=$(cd $dir) 

しかし、それは動作しません。どうしたらいいですか?ディレクトリが存在しない場合

cd $dir 2>/dev/null 
+0

'$(...)'構文は、コマンドの*出力*をステータスではなくキャプチャします。 –

+0

ご清聴ありがとうございます。 – LiLou1

+0

実際には、あなたのメッセージを印刷したくありません。あなたは本当にcdがエラーメッセージを出すことを好むでしょう。エラーは、ディレクトリが存在しない場合があります。エラーメッセージが間違っている場合次のように書いてください:cd $ dir ||出口-1。 (または単に-eをセットしてください) –

答えて

4

は、標準エラーをリダイレクトします。あなたの意図がユーザーを混乱させることになっている場合は、提供されている他の回答を使用してください。しかし、あなたが本当にやりたいことは、CD聞かせてされたエラーメッセージを発するとだけ書く:

 
cd $dir || exit 255 

は、あなただけの混乱につながる何が起こったか、エラー絶対にないアイデアを持っていないときにエラーメッセージを印刷しようとしています。

+1

downvoteの理由が提供されていれば、少なくとも私には助けになるでしょう。ありがとう。 – hmjd

+0

もちろん、もちろん! Ty :) – LiLou1

+0

これで解決しましたか?または、他の何か? – hmjd

4
if cd $dir 2> /dev/null; then ...; else echo "The directory doesn't exist"; exit -1; fi 
1
cd $dir 2>/dev/null || { echo "The directory doesn't exist"; exit -1; } 
... 
1

が、スクリプトは、それを入力する権限を持っていない場合、何をやろうとしていることは、ユーザーを混乱させている。

関連する問題