Используйте массив $ ^
.
Он превращает массив в своего рода фигурную скобку, расширяющую массив. Как и в случае, когда a = (foo bar baz)
, $ ^ a
будет немного похоже на {foo, bar, baz}
.
$ a=(foo bar baz)
$ echo prefix${^a}suffix
prefixfoosuffix prefixbarsuffix prefixbazsuffix
Для мультиплексирования массивов:
$ a=(1 2 3) b=(a b c)
$ echo $^a$^b
1a 1b 1c 2a 2b 2c 3a 3b 3c
Естественно, если префикс или суффикс содержат специальные символы оболочки (например, ;
, разделяющие команды или пробел, разделяющий слова, или $ "'& * [? ~
...), они должны быть процитированы:
echo 'p r e f i x '$^a' s u f f i x'
так же, как для csh
' (и bash, ksh, zsh's):
echo 'p r e f i x '{foo,bar,baz}' s u f f i x'
$ ^ a
не может быть заключен в кавычки, "foo $ {^ a} bar"
будет расширяться как одно слово. Один случай, когда вам понадобится $ ^ array
, как и для $ array
, когда вы хотите сохранить пустые элементы. Затем вам нужно указать расширение массива и использовать флаг (@)
или "$ {array [@]}"
синтаксис (напоминающий "$ @"
оболочки Борна):
$ array=(x '')
$ printf '<%s>\n' $array # empties removed
<x>
$ printf '<%s>\n' "$array" # array elts joined with spaces
<x >
$ printf '<%s>\n' "${(@)array}" # empties preserved
<x>
<>
$ printf '<%s>\n' "$array[@]" # empties preserved
<x>
<>
$ printf '<%s>\n' $^array$^array # empty removed
<xx>
<x>
<x>
$ printf '<%s>\n' "$^array$^array" # concatenation of joined arrays
<x x >
$ printf '<%s>\n' "$^array[@]$^array[@]" # multiplexing with empties preserved
<xx>
<x>
<x>
<>
Обновление от 2021 г.:
Этому вопросу/ответу было два года (, заданному в 2018 году ), и позже все изменилось. Вот ряд событий, произошедших до сих пор,
Red Hat приобрела CoreOS в начале 2018 года, а затем поделилась планами интеграции продукта и проекта.
26 мая 2020 года жизненный цикл CoreOS Container Linux подошел к концу, и он больше не будет получать обновления.
Обновление 2020 г. :Объявление об окончании -из -жизненного цикла CoreOS Container Linux и представление Fedora CoreOS
Fedora CoreOS является официальным преемником CoreOS Container Linux. Fedora CoreOS — это новая версия Fedora Edition, созданная специально для безопасного и масштабируемого запуска контейнерных рабочих нагрузок. Он сочетает в себе инструменты подготовки и модель автоматического обновления Container Linux с технологией упаковки, поддержкой OCI,и безопасность SELinux для Atomic Host.
Тем не менее, Fedora CoreOS не полностью заменила Container Linux во всех случаях использования. Миграция идет.
1 сентября 2020 г. или позднее опубликованные ресурсы, связанные с CoreOS Container Linux, будут удалены или доступны -только для чтения. Загрузки ОС будут удалены, серверы CoreUpdate будут отключены, а образы ОС будут удалены из AWS, Azure и Google Compute Engine.
Ссылка:https://www.redhat.com/en/technologies/cloud-computing/openshift/what-was-coreos
Я позвонил агенту RED HAT в Японии и получил ответы ниже.
Поэтому можно сказать,: