Глобализация происходит только в контекстах списка, поэтому вам нужно будет присвоить переменную array . С ksh93
, bash
, zsh
, mksh
или yash
:
the_files=(~/downloads/stack-*-linux-x86_64-static.tar.gz)
Или в sh
:
set -- ~/downloads/stack-*-linux-x86_64-static.tar.gz
для назначения $ 1
, $ 2
...
И для получения первого элемента: «$ {the_files [1]}»
в zsh
или yash
(или просто $ the_files [1]
в zsh
) или "$ {the_files [0]} "
в ksh
или bash
.
Для всех элементов: "$ {the_files [@]}"
(также $ the_files
в zsh
).
Для объединения элементов, соединенных первым символом $ IFS
: «$ {the_files [*]}»
(также «$ the_files»
] на zsh
). Или соединяется с любой строкой в zsh
: $ {(j :,:) the_files}
(здесь соединяется с ,
).
the_file=~/downloads/stack-*-linux-x86_64-static.tar.gz
~
будет расширен, но не глобус.Однако, если вы забыли использовать кавычки при раскрытии переменной, например:
printf '%s\n' $the_file # instead of printf '%s\n' "$the_file"
, тогда содержимое $ the_file
будет подвергаться split + glob и расширено в этой точке , что может заставить вас думать, что это работает, хотя на самом деле это не так, и здесь в сочетании с расширением тильды это может даже стать более беспорядочным.
Например, если ваш $ HOME
равен / All * Users / me
, а для $ IFS
установлено значение по умолчанию, тогда $ the_file
будет содержать / All * Users / me / downloads / stack - * - linux-x86_64-static.tar.gz
и printf
напечатает / All
], за которым следуют имена всех файлов в текущем каталоге (расширение *
), за которым следует расширение Users / me / downloads / stack - * - linux-x86_64-static.tar. gz
.
В zsh
вы получите сообщение об ошибке, но в других оболочках шаблон остается нетронутым. Лучше всего, если бы шаблон вообще не расширялся до нуля.
С zsh
, это с квалификатором glob N
:
the_files=(~/downloads/stack-*-linux-x86_64-static.tar.gz(N))
ksh93
имеет аналогичную функцию с его оператором ~ (N)
glob :
the_files=(~/downloads/~(N)stack-*-linux-x86_64-static.tar.gz)
Для других оболочек вам нужно включить некоторые глобальные параметры ( shopt -s nullglob
в bash
, установить -o nullglob
в Яш
).
Команда должна быть такой:
sudo apt-get install udhcpd=1:1.22.0-9+deb8u1
Ошибка - v
на udhcpd = 1: 1.22 .0-9 + de v 8u1