HĂ€nge einen String an die Array-Elemente an und verbinde sie in einem Ausdruck - zsh, array

Nehmen wir an, ich habe ein Array

> words=(foo bar baz)

Jetzt kann ich die Elemente verbinden

> echo ${(j., .)words}
foo, bar, baz

Und ich kann eine Zeichenfolge an die Elemente anhÀngen:

> echo ${^words}yeah
fooyeah baryeah bazyeah

Mit dem Folgenden kann ich die Elemente anfĂŒgen und verbinden:

> wordsyeah=(${^words}yeah)
> echo ${(j., .)wordsyeah}
fooyeah, baryeah, bazyeah

Ist es möglich, "fooyeah, baryeah, bazyeah" in einem einzelnen Ausdruck zu drucken, d. H. Ohne Verwendung zusÀtzlicher Variablen?

Bonus: Kann ich das ausdrucken, ohne irgendwelche Variablen zu benutzen?

Soweit ich das beurteilen kann, lĂ€uft das darauf hinaus, Parametererweiterungen fĂŒr Zeichenfolgen auszufĂŒhren, aber ich konnte nicht herausfinden, wie (oder ob) das möglich ist.

Antworten:

3 fĂŒr Antwort № 1

Die Antwort ist

> print ${(j., .)${:-${^words}yeah}}
fooyeah, baryeah, bazyeah

oder

> print ${(j., .)${:-{foo,bar,baz}yeah}}
fooyeah, baryeah, bazyeah

ohne Variablen ĂŒberhaupt zu verwenden

Der kritische Teil ist ${name:-word}. Es wird in erklÀrt das Handbuch.

${name-word}
${name:-word}

Wenn name festgelegt ist oder in der zweiten Form nicht null ist, ersetzen Sie dessen Wert. Andernfalls ersetzen Sie das Wort. In der zweiten Form kann der Name weggelassen werden. In diesem Fall wird das Wort immer ersetzt.

Vielen Dank an phy1729 von #zsh fĂŒr den Hinweis :)


Lies jetzt