現在、このようなコマンドを使用しています
$ teststring=$(cat foo.txt 2>/dev/null)
私が望むように、ファイルが存在するかどうかに関係なく、これには出力がありません。次のコマンドは、ファイルが存在しない場合、出力を抑制する方法がないようです。
$ teststring=$(<foo.txt)
bash: foo.txt: No such file or directory
現在、このようなコマンドを使用しています
$ teststring=$(cat foo.txt 2>/dev/null)
私が望むように、ファイルが存在するかどうかに関係なく、これには出力がありません。次のコマンドは、ファイルが存在しない場合、出力を抑制する方法がないようです。
$ teststring=$(<foo.txt)
bash: foo.txt: No such file or directory
{ teststring=$(<foo.txt); } 2>/dev/null
簡単な説明は、リダイレクトの前に拡張が実行されることです。
技術的な説明は、Bashのリダイレクト/割り当て順序に仕様違反があるということです。この特殊なケースは許容される例外ですが、これはすべてのシェルで問題になるわけではなく、動作はコンテキストによって異なる場合があります。上記の回避策は、関係なく常に機能するはずです。