Вы были очень близки.
В объявлении переменной не должно быть пробелов вокруг =
.
Do:
Var1=${myarray[0]}
Они совершенно разные.
a[bc]d
— это шаблон имени файла(в оболочках, отличных отfish
). Он будет расширен до двух имен файловabd
и acd
, если это имена существующих файлов в текущем каталоге.
Часть [...]
представляет собой выражение в квадратных скобках, которое соответствует одному символу из перечисленных (или элементов сортировки, когда включены диапазоны ). Чтобы соответствовать шаблону a[bc]d
, символ между строками a
и d
в имени файла должен быть либо b
, либо c
.
Если abd
существует, а acd
нет, то оно расширится только до abd
и наоборот.
Если ни abd
, ни acd
не существуют, в зависимости от оболочки и параметров это вызовет ошибку (исходного Unix sh
, (t)csh
, zsh
, fish
,bash -O failglob
)и, возможно, выйти из оболочки или оставить шаблон нераскрытым¹ (Bourne -как иrc
-подобно оболочкам )или расширяться до нуля (bash/zsh/yash -o nullglob
, некоторые старые версии fish
, оригинальный Unix sh
и (t)csh
, если в той же команде есть другие подходящие глобусы ).
a{b,c}d
— это расширение скобок(в оболочках, поддерживающих эти ).Он расширится до двух строк abd
и acd
.
В этом примере часть {...}
представляет собой разделенный запятыми -набор строк (; в некоторых оболочках это также может быть диапазон, такой как a..k
или 20..25
, или более сложные, такие как 00..20..2
или 0..20..2%02d
), и расширение вычисляется путем объединения каждой из этих строк с фланкирующими строками a
. и d
. Эти строки могут быть длиннее одного символа, а также сами могут быть расширениями фигурных скобок.
Расширение происходит независимо от того, соответствуют ли эти строки существующим именам файлов или нет.
Если вы создаете строки, используйте фигурные скобки. Если вы сопоставляете имена файлов, используйте шаблон имени файла.
¹ В данном конкретном случае a[bc]d
может оказаться именем существующего файла, поэтому использование таких вещей, как rm -f./*.[ch]
, в этих оболочках потенциально опасно, а rm -f./*.{c,h}
не представляет такой проблемы.