コマンドの出力をbashスクリプト内の変数に格納することに関して問題があります。
一般に、これを行うには2つの方法があることを知っています
どちらか
foo=$(bar)
# or
foo=`bar`
ただし、Javaバージョンクエリの場合、これは機能しないようです。
やった:
version=$(Java --version)
これは、変数内に値を保存しません。まだ印刷されていますが、実際にはそうではありません。
また、出力をファイルにリダイレクトしようとしましたが、これも失敗します。
version=$(Java -version 2>&1)
バージョンパラメータはダッシュを1つだけ使用します。メッセージが書き込まれるstderrをリダイレクトすると、目的の結果が得られます。
補足として、2つのダッシュの使用はシステムのようなUnixでの非公式の標準ですが、Javaは異なるプラットフォーム上でほぼ同一になろうとするため、Unix/Linuxの期待に違反し、同じように動作しますこれは、Windows上、および私が疑うように、Mac OS上と見なされます。
Java -version
はstderr
ではなくstdout
に書き込みます。以下を使用する必要があります。
version=$(Java -version 2>&1)
stderr
をstdout
にリダイレクトするには。
次の2つのコマンドを実行して確認できます。
Java -version > /dev/null
Java -version 2> /dev/null