java - Bashスクリプトのバージョン。整数エラーを提供します

java - Bashスクリプトのバージョン。整数エラーを提供します

if..fi設定ファイルのJavaバージョンでこのケースが機能するように努力しています。 /wrapper.conf出力が次のwrapper.conf場合java

2つのオプションがあります。
1.wrapper.java.command=/apps/jdk1.8.0_191/bin/java
2.wrapper.java.command=java

Javaバージョンが長い場合は印刷する必要があります。

単にJavaの場合はデフォルトのJavaを使用し、Javaのバージョンを確認する必要があることを意味します。

以下のスクリプトを使用すると取得できません。次のエラーが発生します。

integer expression expected
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

スクリプトの断片:

for file in $(echo $folder/conf/wrapper.conf)

do

JavaVersion=$(grep "command" $file | awk -F "=" '{print $NF}')

if [ "$JavaVersion" -eq "java" ]; then

java -version 2>&1 >/dev/null | grep 'java version'

else

$JavaVersion

fi

ベストアンサー1

とは別にdoneあなたのループはありませんfra-sanがコメントしました-eq 整数の比較比較を要求した文字列とエラーについて文句を言いながら、引数なしで特定のJavaバイナリを呼び出して、見ているエラーの後半を生成しました。

どちらの場合もJavaバージョンが必要になる可能性があるため、$JavaVersionとにかくそうします。

JavaVersion=$(grep wrapper.java.command= "$file" | awk -F "=" '{print $NF}')
"$JavaVersion" -version

Wrapper.java.commandの値が完全でない場合は印刷し、javaそうでなければ実行するという究極の目標を誤解したようですjava -version

if grep -Fxq wrapper.java.command=java "$file" 
then
  java -version 2>&1 | grep 'java version'
else
  grep ^wrapper.java.command= "$file" | cut -d= -f2-
fi

おすすめ記事