In bash, php/{composer,sismo}
si espande a php/composer php/sismo
. C'è un modo per farlo con /bin/sh
(che credo sia dash), la shell di sistema? Sto scrivendo git hooks e would like to stay away from bash as long as I can.trattino equivalente alla sintassi della parentesi graffa di bash?
risposta
È possibile utilizzare printf
.
% printf 'str1%s\t' 'str2' 'str3' 'str4'
str1str2 str1str3 str1str4
Non sembra esserci un modo. Dovrai usare i loop per generare questi nomi, magari in una funzione. Oppure usa le variabili per sostituire le parti comuni, magari con "set -u" per evitare errori di battitura.
Vedo che si preferisce trattino per motivi di prestazioni, tuttavia non sembra che fornisca alcun numero a sostegno della propria decisione. Ti suggerirei di misurare la differenza di prestazioni effettiva e rivalutare. Potresti anche cadere nell'ottimizzazione prematura. Considera quanto tempo di implementazione e di debug salverà utilizzando Bash rispetto al possibile calo delle prestazioni.
Mi piace molto la soluzione fornita da printf
@mikeserv, ma ho pensato di fornire un esempio utilizzando un ciclo.
Il seguente potrebbe essere molto utile se si desidera eseguire un comando per ogni stringa espansa, anziché fornire entrambe le stringhe come argomenti allo stesso comando.
for X in composer sismo; do
echo "php/$X" # replace 'echo' with your command
done
Si potrebbe, tuttavia, riscrivere come
ARGS="$(for X in composer sismo; do echo "php/$X"; done)"
echo $ARGS # replace 'echo' with your command
noti che $ARGS
è non quotati nel comando sopra, ed essere consapevoli che questo significa che il suo contenuto è wordsplitted (cioè se tutte le vostre stringhe originali contenere spazi, si romperà).
- 1. Commento Java alla fine della parentesi graffa/blocco
- 2. Sintassi di parentesi graffa PHP per variabile membro
- 3. SVG parentesi graffa orizzontale
- 4. Parentesi di parentesi graffa in codice C++
- 5. Due istruzioni accanto alla parentesi graffa in un'equazione
- 6. VS 2010 Javascript corrispondente Evidenziamento di parentesi graffa/parentesi
- 7. iTerm2 chiusura parentesi graffa non funziona
- 8. Nome tabella con parentesi con parentesi graffa con dplyr
- 9. Parentesi graffa sinistra deprecata in Perl regex - esattamente quando?
- 10. lxml equivalente alla sintassi BeautifulSoup "OR"?
- 11. Qual è il significato della sintassi $ {0 ## ...} con variabili, parentesi graffe e carattere hash in bash?
- 12. Sintassi del rasoio equivalente della seguente dichiarazione?
- 13. Definizione del corpo della funzione bash utilizzando parentesi anziché controventi
- 14. problema di doppia parentesi bash
- 15. paredit parentesi graffa che corrisponde a swank-clojure repl
- 16. Che dose indicano la parentesi graffa e il segno di percentuale in html?
- 17. Allinea trattino parentesi dopo interruzione di riga nel testo Sublime
- 18. funzioni bash: racchiude il corpo in parentesi vs. parentesi
- 19. Pesce equivalente di bash $ (comando) notazione
- 20. parentesi tonde nella sintassi XAML
- 21. Sintassi della parentesi quadra vs funzioni per localStorage
- 22. Bash basename sintassi
- 23. Significato di parentesi quadre doppie in bash
- 24. La parentesi graffa C# escape non funziona con il modificatore di formato?
- 25. evidenziazione della sintassi in modalità VI-input Bash
- 26. equivalente in bash di os.path.normpath di Python?
- 27. PHP ha un equivalente alla sintassi di comprensione degli elenchi di Python?
- 28. domanda di trucco relativa alla sintassi della dichiarazione in C++
- 29. bash/sh if sintassi dell'istruzione
- 30. Cosa significa && alla fine della firma di una funzione (dopo la parentesi di chiusura)?
Penso che sia davvero l'ottimizzazione prematura, non ero sicuro perché non scrivo molti script di shell. Mi rendo conto che non fanno nulla di complicato quindi la differenza basterà solo il tempo di avvio ... – greg0ire
@ greg0ire, sì, principalmente il tempo di avvio, ma può comunque essere importante per il tuo caso se hai bisogno di molte invocazioni di script, o usi molti sotto-shell nel tuo codice. Se la prestazione è importante per te, misurala per uno scenario tipico. Il tempo di – spbnick
mi dà un calo di differenza: bash = 5ms, sh = 3ms. Penso che sia accettabile comunque. – greg0ire