Eles são chamados de expansão de chave .
Essa é uma das várias expansões feitas por bash
, zsh
e ksh
, a expansão% filename*.txt
sendo outra delas. A expansão de chave não é coberta pelo padrão POSIX e, portanto, não é portátil.
Você pode ler sobre isso em manual do bash .
Sugestão de @ @ Arrow: para obter apenas cat test.pdf test.pdf test.pdf
com a expansão de chaves, você teria que usar esse "hack":
#cat test.pdf test.pdf
cat test.pdf{,}
#cat test.pdf test.pdf test.pdf
cat test.pdf{,,}
#cat test.pdf test.pdf test.pdf test.pdf
cat test.pdf{,,,}
Alguns usos comuns:
for index in {1..10}; do
echo "$index"
done
touch test_file_{a..e}.txt
Ou outro "hack" para imprimir uma string 10 vezes:
printf -- "mystring\n%0.s" {1..10}
Esteja ciente de que a expansão de chaves em bash
é feita antes de expansão do parâmetro, portanto, um erro comum é:
num=10
for index in {1..$num}; do
echo "$index"
done
(o ksh93
shell lida com isso)