2016-04-27 4 views
0

Ich möchte meine git Bitbucket Online-Speicher mit Apfel-Skript aktualisieren. Dies ist der Code, der in Terminal funktioniert, aber nicht, wenn ich ein Apple-Script ausführe.Update Git Repository mit Apple Script

 say "updating backup" 
     do shell script "cd /Users/mainuser/Desktop/Projects git add -A" 
     do shell script "cd /Users/mainuser/Desktop/Projects git commit -m fromAppleScript" 
     do shell script "cd /Users/mainuser/Desktop/Projects git push" 

Ich bin ein wenig verwirrt, warum dieser Code nicht funktioniert:

cd /Users/mainuser/Desktop/Projects git add -A 
git commit -m fromAppleScript 
git push 

in Apfel Skript gefertigt. Kannst du mir mit diesem Problem helfen?

Antwort

1
do shell script "cd /Users/mainuser/Desktop/Projects && git add -A && git commit -m fromAppleScript && git push" 
+0

ich landete mit; zwischen Befehlen. Ich mag deinen I-Linerweg noch mehr. – sanjihan

+0

Chaining Befehle mit dem '' && Operator haben den Vorteil, dass, wenn der erste Befehl fehlschlägt, der zweite Befehl zu übersprungen. Semikolons fungieren nur als Befehlstrennzeichen, ebenso wie Zeilenvorschübe. sie haben keinen Einfluss auf die Ausführung, so dass selbst wenn ein wichtiger Befehl wie den 'cd' die nachfolgenden Befehle nicht noch angewendet, aber jetzt im falschen Verzeichnis. Eine weitere Option ist 'auf put am Anfang des Skripts -e', die bash sagt sofort zu beenden, wenn _jeder_ nachfolgender Befehl fehlschlägt. Unix-Shells ist notorisch schnell und locker mit teensy Details wie Sicherheit und Zuverlässigkeit, so dass es am besten ist, defensiv zu codieren. – foo

1

Ich glaube, das Problem, das Sie haben, ist mit dem Befehl cd vor Ihren git add und git commit Befehle. Sie verketten zwei Befehle zusammen.