Czy muszę wykonać konfigurację, aby rozpocząć rozszerzanie nawiasów? Kiedy uruchamiam mkdir {1..10}
, po prostu tworzy nazwę katalogu {1..10}
.
shell
brace-expansion
użytkownik43312
źródło
źródło
mkdir {1..10}
działa dla mnie, tworzy dziesięć reż.echo ${SHELL}
aby to pytanie było w stanie uzyskać przydatną odpowiedź.Odpowiedzi:
Podczas gdy ekspansja nawiasów klamrowych
{1,2}
pochodzicsh
z późnych lat 70. i trafiła do podobnych do Bourne'a pocisków wbash
/zsh
/pdksh
pod koniec lat 80., na początku lat 90.,{n1..n2}
wariant pojawił się późniejzsh
w 1995 r. (2.6-beta4).bash
skopiowałem go w 2004 r. (3.0) iksh93
w 2005 r. (ksh93r
).Prawdopodobnie powłoka, w której próbujesz tego użyć, nie jest żadną z nich lub jest starszą wersją
bash
iksh93
.źródło
#!/bin/sh
.../bin/sh
jestbash
lubksh93
./bin/sh
działają jako historycznesh
(tak zresztą mówi strona podręcznika bash). Nie sprawdziłemksh
strony podręcznika użytkownika, ale jestem pewien, że będzie się odpowiednio zachowywać.zsh
). Innym obejściem byłoby użycie czegoś takiego jak „mkdir $ (seq 1 10)”.{x..y}
Rozszerzenie zakresu nawiasów jest zaimplementowane w bash 3.0-alpha. Aby pomóc nam i sobie, pokaż swojeecho "$BASH_VERSION"
wyniki.Następnie odpowiedź: Jeśli
mkdir {1..10}
tworzy katalog z nazwą{1..10}
, to wcześniej używasz wersji bashbash 3.0-alpha
. W takim przypadku można użyć konstrukcji pętli for:for ((i=1;i<=10; i++)); do mkdir "$i"; done
źródło
Sprawdź swoją wersję Bash:
Sprawdź również, czy
mkdir
nie były to aliasy w jakiś dziwny sposób:źródło