2016-07-30 4 views
0

Ich versuche, ein kleines Skript zu schreiben, um Zweige für mich zu wechseln. Ich habe immer nur einmal in bash geschrieben. Im folgenden Code werden die if s und elif s übersprungen, und egal, was ich als $1 eingeben, überspringt es immer die else. Ich habe mir verschiedene Beispiele angeschaut und nichts funktioniert, obwohl es sein sollte.Bash Control Flow springt zu anderen egal

#!/bin/bash 

if [ "$1 " == "-p" ] 
    then 
     cd ui; 
     git checkout p_4.1; 
     cd ../services; 
     git checkout p_4.1; 
     cd ../application; 
     git checkout p_4.1; 
     cd ..; 
elif [ "$1 " == "-b" ] 
    then 
     cd ui; 
     git checkout b_.1; 
     cd ../services; 
     git checkout b_.1; 
     cd ../application; 
     git checkout b_.1; 
     cd ..; 
elif [ "$1 " == "-g" ] 
    then 
     cd ui; 
     git checkout g_.1; 
     cd ../services; 
     git checkout g_.1; 
     cd ../application; 
     git checkout g_.1; 
     cd ..; 
elif [ "$1 " == "-j" ] 
    then 
     cd ui; 
     git checkout j_.1; 
     cd ../services; 
     git checkout j_.1; 
     cd ../application; 
     git checkout j_.1; 
     cd ..; 
else 
    echo "No Command Known!" 
fi 

Ich habe absolut keine Ahnung, warum es nicht funktioniert.

+0

Vielleicht möchten Sie sich 'case $ 1 in ...' oder 'getopt' oder' getopts' anschauen –

Antwort

4

Die Leerzeichen in den Anführungszeichen sind signifikant, und "$1 " sollte "$1" (kein Leerzeichen) sein.

1

Sie scheinen einen Platz nach jedem $ 1 zu haben. Ich glaube, das ist dein Problem.

Verwandte Themen