it-swarm.com.de

Bash: [: zu viele Argumente?

Ich versuche ein Verzeichnis zu erstellen und cd hinein:

In ~/.bashrc:

function abc() {
  appname=$1
  appdir="$HOME/code/$appname"
  if [ mkdir $appdir -a cd $appdir ]; then
    echo Success
  else
    echo Failed to create and switch directory
  fi
}

Wenn ich bashrc (. ~/.bashrc) neu lade, erhalte ich den Fehler:

bash: [: too many arguments
Failed to create and switch directory

Wie behebe ich das? Und was bedeutet [: im Fehler?

Ps. Könnte mich jemand zu einem "nicht kryptischen" Bash-Skript-Tutorial führen?

8
Zabba

Der Hauptfehler in Ihrem Skript besteht darin, dass der Befehl [, der dem Befehl test entspricht, zum Testen von Bedingungen wie Zeichenfolgenvergleich, Vorhandensein von Dateien usw. verwendet wird.

Um den Beendigungsstatus von Prozessen zu testen, müssen Sie if ohne [ verwenden, damit Ihr Skript dies kann

if mkdir "$appdir" && cd "$appdir"; then
  echo "Success"
else
  echo "Failed to create and switch directory"
fi

Dies wird in Bash-Fallstricke erklärt: 9. if [grep foo myfile .

Ich schlage vor, Sie durchlaufen GrayCat Bash Guide , um bash zu verstehen.

12
enzotib