In Bash, php/{composer,sismo}
erweitert auf php/composer php/sismo
. Gibt es eine Möglichkeit, dies mit /bin/sh
(was ich glaube, Strich ist), die System Shell? Ich schreibe git hooks und would like to stay away from bash as long as I can.Strich entspricht der geschweiften Klammern-Syntax von Bash?
Antwort
Sie können printf
verwenden.
% printf 'str1%s\t' 'str2' 'str3' 'str4'
str1str2 str1str3 str1str4
Es scheint keinen Weg zu geben. Sie müssen Schleifen verwenden, um diese Namen zu erzeugen, vielleicht in einer Funktion. Oder verwenden Sie Variablen, um allgemeine Teile zu ersetzen, vielleicht mit "set -u", um Tippfehler zu vermeiden.
Ich sehe, dass Sie Dash aus Leistungsgründen bevorzugen, aber Sie scheinen keine Zahlen zur Verfügung zu stellen, um Ihre Entscheidung zu begründen. Ich würde vorschlagen, dass Sie den tatsächlichen Leistungsunterschied messen und neu bewerten. Sie könnten auch für vorzeitige Optimierung fallen. Berücksichtigen Sie, wie viel Zeit für die Implementierung und das Debugging Sie bei der Verwendung von Bash im Vergleich zu möglichen Leistungseinbußen sparen.
Ich mag die printf
Lösung von @mikeserv zur Verfügung gestellt, aber ich dachte, dass ich ein Beispiel nennen würde eine Schleife verwenden.
Das Folgende wäre wahrscheinlich am nützlichsten, wenn Sie einen Befehl für jede erweiterte Zeichenfolge ausführen möchten, anstatt beide Zeichenfolgen als Argumente für denselben Befehl bereitzustellen.
for X in composer sismo; do
echo "php/$X" # replace 'echo' with your command
done
Sie könnten jedoch umschreiben es als
ARGS="$(for X in composer sismo; do echo "php/$X"; done)"
echo $ARGS # replace 'echo' with your command
Beachten Sie, dass $ARGS
in dem obigen Befehl unquoted ist, und sich bewusst sein, dass dies bedeutet, dass sein Inhalt wordsplitted (dh wenn irgendwelche Ihrer Original-Zeichenketten Leerzeichen enthalten, wird es brechen).
- 1. Was bedeutet der Doppelpunkt Strich ": -" in Bash
- 2. Verwendung von: - (Doppelpunkt Strich) in Bash
- 3. Gibt es einen Vim, der Bash '! $' Entspricht?
- 4. Entspricht Bash alias in Powershell
- 5. Was entspricht %% ~ nxD in Bash?
- 6. Regex entspricht einem Strich, auf den kein "@" Zeichen folgt
- 7. PowerShell entspricht BASH (etc) 'Typ' Befehl?
- 8. Was bedeutet | & (senkrechter Strich, kaufmännisches Und) in bash?
- 9. Python, langen Strich durch kurzen Strich ersetzen?
- 10. In Git, was bedeutet - (Strich Strich)?
- 11. Remove Strich von einer Telefonnummer
- 12. Warum wird die eckige Klammernsyntax von Heroku gerendert, aber in der Entwicklung interpretiert?
- 13. Was ist der optimale Weg, Werte zwischen geschweiften Klammern in bash/awk zu extrahieren?
- 14. Wie setze ich Umgebungsvariablen mit - (Strich) Optionen
- 15. Android - Strich innerhalb Pfad
- 16. Django doppelt geschweiften Klammer {{
- 17. Programm zum Ausgleich der geschweiften Klammern
- 18. Auswahl der Spalte dynamisch mit geschweiften Klammern
- 19. Python Import Strich Modul
- 20. POSIX-kompatible Shell entspricht Bash "while read -d $ '\ 0' ..."?
- 21. Wie skizzieren Strich C#?
- 22. Copykonstruktor geschweiften Klammern Initialisierung
- 23. Regex/Entfernen Strich von String in Ruby
- 24. Eingabe von Strich zwischen Zahlen in Javascript
- 25. Initialisieren von Klasseninstanz mit geschweiften Klammern
- 26. Validierung der Eingabe von Bash
- 27. Regex alphanumerische Zeichen übereinstimmen, unterstreichen, Perioden und Strich, so dass Punkt-Strich nur in der Mitte
- 28. Strich in Cocos2d
- 29. Punkt: Strich in Name
- 30. Wie ein Strich Muster
Ich denke, es ist in der Tat vorzeitige Optimierung, ich war mir nicht sicher, weil ich nicht so viel Shell-Skripte schreiben. Ich merke, dass sie nichts kompliziertes tun, so dass der Unterschied nur Startup-Zeit bash ... – greg0ire
@ greg0ire, ja, meist die Startzeit, aber es kann immer noch wichtig für Ihren Fall, wenn Sie viele Skriptaufrufe benötigen, oder viele verwenden Sub-Shells in Ihrem Code. Wenn die Leistung für Sie wichtig ist, messen Sie sie für ein typisches Szenario. – spbnick
Zeit gibt mir einen Unterschied fallen: bash = 5ms, sh = 3ms. Ich denke aber, dass es akzeptabel ist. – greg0ire