0

現在、このようなコマンドを使用しています

$ teststring=$(cat foo.txt 2>/dev/null)

私が望むように、ファイルが存在するかどうかに関係なく、これには出力がありません。次のコマンドは、ファイルが存在しない場合、出力を抑制する方法がないようです。

$ teststring=$(<foo.txt)
bash: foo.txt: No such file or directory
4

1 に答える 1

2
{ teststring=$(<foo.txt); } 2>/dev/null

簡単な説明は、リダイレクトの前に拡張が実行されることです。

技術的な説明は、Bashのリダイレクト/割り当て順序に仕様違反があるということです。この特殊なケースは許容される例外ですが、これはすべてのシェルで問題になるわけではなく、動作はコンテキストによって異なる場合があります。上記の回避策は、関係なく常に機能するはずです。

于 2012-06-22T12:05:28.263 に答える