2016-08-09 17 views
0

Ich bekomme unter Fehler beim Ausführen eines Shell-Skripts. Hilfe freundlicher [Absicht für das Skript zu prüfen ist, ob die aktuelle Betriebssystem-Version (RHEL/CentOS) ist weniger als 7 oder nicht]Problem in Shell-Skript

==================== ============== FEHLER ============================

./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

ist es schwer, Ihre Frage zu verstehen. Bitte schreiben Sie es neu, damit wir das Skript richtig sehen können. – stzahi

+0

Was ist das (') Apostroph vor "#!/Bin/bash" ?? – stzahi

+1

Verwenden Sie '-lt' anstelle von' <'. Verwenden Sie auch '[[]]' anstelle von '[]', um zu verhindern, dass die Shell '<' and '>' als Dateideskriptoren/Operatoren interpretiert. – 123

Antwort

1

Der [ (test) builtin (und externe on) (und auch Schlüsselwort [[) nicht unterstützt <, > arithmetische Vergleiche. Sie müssen den arithmetischen Vergleichsoperator (( oder verwenden -lt (weniger als):

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

Vielen Dank, damit ich verstehe, wo ich falsch lag. Nochmals vielen Dank. – 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 

Hinweis:

  1. Vermeiden Sie Graviszeichen. Sie können var = $ (command) verwenden
  2. Für ganzzahligen Vergleich, verwenden Sie -lt, -gt, -eq, -ne zum Vergleich.
  3. Überprüfen Sie Ihre Codesyntax unter Shell-check. Du hättest das selbst lösen können.
+0

Einige Erklärung wäre für OP nützlich. – 123

+0

Danke. Es funktioniert jetzt. – SJP

+0

@SJP froh, dass es geholfen hat. –