Czy muszę wykonać konfigurację, aby rozpocząć rozszerzanie nawiasów? Kiedy uruchamiam mkdir {1..10}, po prostu tworzy nazwę katalogu {1..10}.
echo ${SHELL}aby to pytanie było w stanie uzyskać przydatną odpowiedź.
Czy muszę wykonać konfigurację, aby rozpocząć rozszerzanie nawiasów? Kiedy uruchamiam mkdir {1..10}, po prostu tworzy nazwę katalogu {1..10}.
echo ${SHELL}aby to pytanie było w stanie uzyskać przydatną odpowiedź.
Odpowiedzi:
Podczas gdy ekspansja nawiasów klamrowych {1,2}pochodzi cshz późnych lat 70. i trafiła do podobnych do Bourne'a pocisków w bash/ zsh/ pdkshpod koniec lat 80., na początku lat 90., {n1..n2}wariant pojawił się później zshw 1995 r. (2.6-beta4).
bashskopiowałem go w 2004 r. (3.0) i ksh93w 2005 r. ( ksh93r).
Prawdopodobnie powłoka, w której próbujesz tego użyć, nie jest żadną z nich lub jest starszą wersją bashi ksh93.
#!/bin/sh...
/bin/shjest bashlub ksh93.
/bin/sh działają jako historyczne sh(tak zresztą mówi strona podręcznika bash). Nie sprawdziłem kshstrony 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ż swoje echo "$BASH_VERSION"wyniki.
Następnie odpowiedź: Jeśli mkdir {1..10}tworzy katalog z nazwą {1..10}, to wcześniej używasz wersji bash bash 3.0-alpha. W takim przypadku można użyć konstrukcji pętli for:
for ((i=1;i<=10; i++)); do mkdir "$i"; done
Sprawdź swoją wersję Bash:
$ bash -version
GNU bash, version 4.1.7(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Sprawdź również, czy mkdirnie były to aliasy w jakiś dziwny sposób:
$ alias |grep mkdir
alias md='mkdir'
mkdir {1..10}działa dla mnie, tworzy dziesięć reż.