2017-02-11 2 views
-1

ich diese Störung erhalte:Meine if-Anweisung funktioniert nicht mit Bash

[[: command not found 

Hier ist mein Code:

#!/usr/bin/env bash 

IS_PYSTACHE_INSTALLED=$(pip list --format=columns | grep "pystache ") 
if [[ ! -z "${IS_PYSTACHE_INSTALLED}" ]]; then 
    echo " > Installing pystache" 
    pip install pystache 
else 
    echo " > Pystache is already installed" 
fi 

Was mache ich falsch?

+2

Sind Sie sicher, Ihre Shell ist wirklich Bash? Wahrscheinlich ist es etwas anderes, zum Beispiel Dash. – janos

+0

Wenn Sie kein Shebang haben und es als Skript ausführen (zB mit './Script' anstelle von' bash script'), wird das Skript mit '/ bin/sh' ausgeführt, was jedoch nicht der Fall ist Unterstützung '[[' '. – chepner

+0

Ich habe Shebang. Ich habe den ganzen Code nicht kopiert. Es gab auch keinen Grund. Der Rest funktioniert. – jnbdz

Antwort

1

, wenn Sie unsicher Ihr Standard-Shell sind, an das Terminal gehen und ein echo $SHELL tun, wenn Sie #/bin/bash dann chmod Ihr Skript zu sehen und es wie diese ./filename.sh laufen, aber stellen Sie sicher, dass Ihre Hash-Bang Zeile #!/usr/bin/env bash ist. Wenn Sie Ihre Standard-Shell in Bash ändern möchten, verwenden Sie die chsh Befehl

+0

Wenn ich $ SHELL 'widerspreche, bekomme ich/bin/bash. Auch hier läuft der Großteil des Skripts in Ordnung. Es ist genau dieser Teil, der einen Fehler verursacht. – jnbdz