Supponiamo che io abbia un array
> words=(foo bar baz)
Ora posso unire gli elementi
> echo ${(j., .)words}
foo, bar, baz
E posso aggiungere una stringa agli elementi:
> echo ${^words}yeah
fooyeah baryeah bazyeah
Con quanto segue, posso aggiungere e unire gli elementi:
> wordsyeah=(${^words}yeah)
> echo ${(j., .)wordsyeah}
fooyeah, baryeah, bazyeah
È possibile stampare "fooyeah, baryeah, bazyeah" in una sola espressione, cioè senza usare variabili aggiuntive?
Bonus: posso stamparlo senza usare alcuna variabile?
Per quanto posso dire, questo si riduce all'esecuzione dell'espansione dei parametri sulle stringhe, ma non sono stato in grado di scoprire come (o se) ciò è possibile.
echo ${(j:, :):-${^${=:-foo bar baz}}yeah}
, che in realtà è più difficile da scrivere e 12 caratteri più lungo diecho fooyeah, baryeah, bazyeah
. Quindi ha senso soprattutto se sono coinvolte variabili, ad esempioecho ${(j:, :):-${^${words}}yeah}
(words
essendo un array).