Unbeabsichtigtes Entkommen von Anführungszeichen in Bash

2

Ich versuche, den folgenden Git-Alias ​​als Befehl in Git-Bash hinzuzufügen (Windows-Benutzer hier).

yolo = "!git init && git remote add origin $1 && git pull"

Nichts davon scheint zu funktionieren. Die ehemalige wirft einen Fehler und dieser entkommt das doppelte Anführungszeichen in .gitconfigzuyolo = \"!git init && git remote add origin $1 && git pull\"

$ git config --global alias.yolo "!git init && git remote add origin $1 && git pull"

$ git config --global alias.yolo '"!git init && git remote add origin $1 && git pull"'

Update: Der vom ersten Befehl angezeigte Fehler ist

git config --global alias.yolo "git config --global alias.yolo '"!git init && git remote add origin $1 && git pull"' init && git remote add origin $1 && git pull"
usage: git remote add [<options>] <name> <url>

-f, --fetch           fetch the remote branches
--tags                import all tags and associated objects when fetching
                      or do not fetch any tag at all (--no-tags)
-t, --track <branch>  branch(es) to track
-m, --master <branch>
                      master branch
--mirror[=<push|fetch>]
                      set up remote as a mirror to push to or fetch from
Collizo4sky
quelle
Was ist der Fehler?
Ouroborus
Frage mit dem Fehler aktualisiert.
Collizo4sky

Antworten:

1

Versucht Ihr Alias ​​nicht genau das zu tun, was er git clonebereits tut?


$1Hier wird nichts Sinnvolles getan. Die Alias-Erweiterung von Git hängt die vom Benutzer angegebenen Parameter lediglich am Ende des konfigurierten Befehls an. Es sagt der Shell nicht, dass sie in $ @ gemappt werden sollen.

Hier gibt es zwei Möglichkeiten:

  • Definieren Sie eine Funktion und führen Sie sie aus:

    yolo = "!fred() { git init && git remote add origin \"$1\" && git pull; }; fred"

    Auf diese Weise bedeutet $ 1, dass die Parameter der Funktion korrekt funktionieren.

  • Schreiben Sie ein Skript mit dem Namen git-yolo:

    (Muss nicht / bin / sh sein, könnte bash oder perl oder irgendetwas sein)

    #!/bin/sh
    git init && git remote add origin "$1" && git pull

    Platzieren Sie das Skript an einer beliebigen Stelle in Ihren $PATHkonfigurierten Verzeichnissen, z /usr/local/bin/git-yolo. Dadurch wird Git als git yoloUnterbefehl erkannt .

Grawity
quelle
Hallo, danke für deine Antwort. Ich bin neu im Bash-Scripting. Das Problem ist, dass das Bearbeiten von .gitconfig und das Hinzufügen yolo = "!git init && git remote add origin $1 && git pull"funktioniert, wenn der git yoloBefehl ausgeführt wird. es funktioniert einwandfrei. Git-Klon funktioniert nur, wenn das Verzeichnis nicht leer ist. Ich möchte nur, wie der Alias ​​hinzugefügt werden kann. git config --global alias.yolo ... Ich möchte nur, dass das doppelte Anführungszeichen nicht maskiert wird.
Collizo4sky