W bash, php/{composer,sismo}
rozwija się do php/composer php/sismo
. Czy jest jakiś sposób, aby to zrobić z /bin/sh
(co moim zdaniem jest myślnikiem), powłoka systemu? Piszę git hooks i would like to stay away from bash as long as I can.myślnik odpowiadający składni nawiasów klamrowych basha?
Odpowiedz
Można użyć printf
.
% printf 'str1%s\t' 'str2' 'str3' 'str4'
str1str2 str1str3 str1str4
Wydaje się, że nie ma sposobu. Będziesz musiał użyć pętli do wygenerowania tych nazw, być może w funkcji. Lub użyj zmiennych do zastąpienia części wspólnych, być może z "set -u", aby zapobiec literom.
Widzę, że wolisz myślnik z powodów związanych z wydajnością, jednak wydaje się, że nie podajesz żadnych liczb w celu uzasadnienia swojej decyzji. Proponuję zmierzyć rzeczywistą różnicę w wydajności i powtórzyć. Możliwe, że ulegasz przedwczesnej optymalizacji. Zastanów się, ile czasu na wdrożenie i debugowanie zaoszczędzisz, używając Bash vs. możliwy spadek wydajności.
bardzo podoba mi się rozwiązanie printf
dostarczonych przez @mikeserv, ale pomyślałem, że stanowią przykład za pomocą pętli.
Poniższa pozycja byłaby prawdopodobnie najbardziej przydatna, gdybyś chciał wykonać jedno polecenie dla każdego rozwiniętego łańcucha, zamiast podawać oba łańcuchy jako argumenty dla tego samego polecenia.
for X in composer sismo; do
echo "php/$X" # replace 'echo' with your command
done
Mogłeś jednak przepisać go jako
ARGS="$(for X in composer sismo; do echo "php/$X"; done)"
echo $ARGS # replace 'echo' with your command
Zauważ, że $ARGS
jest cytowane w powyższym poleceniu, a należy pamiętać, że oznacza to, że jej treść jest wordsplitted (tzn czy jakichkolwiek oryginalnych strun zawierają spacje, to się zepsuje).
- 1. Zrozumienie kontekstu nawiasów klamrowych '{}'
- 2. Kiedy używasz nawiasów klamrowych?
- 3. Definiowanie bryły funkcji bash za pomocą nawiasów zamiast nawiasów klamrowych
- 4. Ucieczka nawiasów klamrowych w props.children
- 5. nawiasów klamrowych w Arrow Funkcje
- 6. Pominięcie nawiasów klamrowych dla skrótu w tablicy
- 7. Używanie nawiasów klamrowych do inicjowania zestawu
- 8. Grep i regex - dlaczego unikam nawiasów klamrowych?
- 9. Bloki - nawiasy klamrowe/bez nawiasów klamrowych?
- 10. Ustawianie motywu vim dla podświetlonych nawiasów klamrowych
- 11. wyłączyć automatyczne wstawianie nawiasów klamrowych w vscode
- 12. Regex - pasujący do drugiego zestawu nawiasów klamrowych ([])
- 13. Reguła StyleCop dla wielowarstwowych nawiasów klamrowych
- 14. Usuwanie dopasowanych nawiasów klamrowych w Visual Studio
- 15. Jak zdefiniować wcięcia w vim na podstawie nawiasów klamrowych?
- 16. Zrozumienie dziwnej składni za pomocą nawiasów klamrowych na liście inicjalizatora konstruktora
- 17. Odsyłanie tekstu Oracle za pomocą nawiasów klamrowych i symboli wieloznacznych
- 18. javascript - zastępuje myślnik (myślnik) spacją
- 19. Składnia nazw PHP: Jaka jest różnica w nawiasach klamrowych vs. bez nawiasów klamrowych?
- 20. Regex do dopasowywania wszystkich słów między seriami nawiasów klamrowych
- 21. regexp_matches lepszego sposobu, aby pozbyć się powracających nawiasów klamrowych
- 22. Jak zapobiec automatycznemu zamykaniu nawiasów klamrowych w programie ReSharper?
- 23. Podkreślanie nawiasów klamrowych w Visual Studio dla JavaScript?
- 24. Dlaczego argumenty wiersza polecenia bash po 9 wymagają nawiasów klamrowych?
- 25. Wychwycenie podwójnych nawiasów klamrowych {{}} w szablonach Swig dla AngularJS
- 26. Przypadkowo "stwórz" abstrakcyjny typ klasy przy użyciu inicjatorów nawiasów klamrowych?
- 27. Jak zrobić jednolinijkową pętlę w Ruby używając nawiasów klamrowych
- 28. Dlaczego potrzebuję więcej nawiasów klamrowych podczas inicjowania tej struktury?
- 29. Jaka jest druga para nawiasów klamrowych w tej strukturze Golanga?
- 30. Inicjowanie tymczasowy łączną obiektu za pomocą nawiasów klamrowych
Myślę, że to rzeczywiście przedwczesna optymalizacja, nie byłem pewien, ponieważ nie piszę tak dużo skryptów powłoki. Zdaję sobie sprawę, że nie robią nic skomplikowanego, więc różnica będzie tylko czas uruchamiania bash ... – greg0ire
@ greg0ire, tak, głównie czas uruchamiania, ale nadal może być ważne dla twojego przypadku, jeśli potrzebujesz wielu wywołań skryptu lub użyć wielu pod-powłoki w kodzie. Jeśli wydajność jest dla Ciebie ważna, zmierz ją dla typowego scenariusza. – spbnick
czas daje mi różnicę drop: bash = 5ms, sh = 3ms. Myślę, że jest to jednak do przyjęcia. – greg0ire