2016-08-09 16 views
0

シェルスクリプトの実行中にエラーが発生する親切に助けてください[スクリプトの意図は、現在のOSのバージョン(RHEL/CentOS)が7未満であるかどうかを確認することです]シェルスクリプトの問題

================== ==============エラー=================================

./test.sh: line 5: 7]: No such file or directory 
PHP 5.4 will be installed by default 

================================ =======================

#!/bin/bash 
# Script Name: test.sh 

VERSION=`cat /etc/redhat-release|awk '{print $4}'|cut -d "." -f1` 
if [ "$VERSION" < "7" ] 
then 
echo "PHP 5.4 need to be installed separately" 

    else 
    echo "PHP 5.4 will be installed by default" 

fi` 
+0

あなたの質問を理解するのは難しいです。スクリプトを正しく表示できるように書き直してください。 – stzahi

+0

"#!/ bin/bash"の前にある( ')アポストロフィは何ですか? – stzahi

+1

'<'の代わりに '-lt'を使います。シェルがファイル記述子/演算子として '<' and '>'を解釈しないようにするには '[] 'の代わりに' [[]] 'を使います。 – 123

答えて

1

[test)組み込み(および外部1)(ともキーワード[[)をサポートしていません。 <,>スタイルの算術比較。

(("$VERSION" < 7)) 
[ "$VERSION" -lt 7 ] 
+0

私はどこが間違っていたか理解してくれてありがとう。もう一度あなたに感謝します。 – SJP

0
#!/bin/bash 
# Script Name: test.sh 

VERSION=$(awk '{print $7}' /etc/redhat-release|cut -d "." -f1) 
if [ "$VERSION" -lt 7 ];then 

    echo "PHP 5.4 need to be installed separately" 

else 
    echo "PHP 5.4 will be installed by default" 

fi 

注:バッククォートを使用して

  1. 回避するには、算術比較演算子((または-lt(未満)を使用する必要があります。 var = $(command)
  2. 整数比較のために、比較のために-lt、-gt、-eq、-neを使用してください。
  3. コードの構文はShell-checkで確認してください。あなたはこれをあなた自身で解決できました。
+0

いくつかの説明はOPのために役立つでしょう。 – 123

+0

ありがとうございます。それは今働いている。 – SJP

+0

@SJPはうれしかったです。 –