Apakah saya harus melakukan konfigurasi untuk memulai ekspansi brace? Ketika saya menjalankan mkdir {1..10}, itu hanya membuat penamaan dir {1..10}.
echo ${SHELL}membuat pertanyaan ini bisa mendapatkan jawaban yang bermanfaat.
Apakah saya harus melakukan konfigurasi untuk memulai ekspansi brace? Ketika saya menjalankan mkdir {1..10}, itu hanya membuat penamaan dir {1..10}.
echo ${SHELL}membuat pertanyaan ini bisa mendapatkan jawaban yang bermanfaat.
Jawaban:
Sementara ekspansi brace seperti {1,2}berasal di cshakhir 70-an, dan menemukan jalan ke shell Bourne-like di bash/ zsh/ pdkshdi akhir 80-an, awal 90-an, {n1..n2}varian datang kemudian pertama zshpada 1995 (2,6-beta4).
bashdisalin pada 2004 (3.0) dan ksh932005 ( ksh93r).
Mungkin shell yang Anda coba ini bukan dari mereka atau versi yang lebih lama dari bashdan ksh93.
#!/bin/sh...
/bin/shadalah bashatau ksh93.
/bin/sh bertindak sebagai bersejarah sh(itu adalah apa yang dikatakan halaman bash man). Belum memeriksa kshhalaman manual, tapi saya yakin itu akan berperilaku sesuai.
zsh) terlebih dahulu. Solusi lain adalah dengan menggunakan sesuatu seperti "mkdir $ (seq 1 10)".
{x..y}Ekspansi range brace diimplementasikan dalam bash 3.0-alpha. Untuk membantu kami dan diri Anda sendiri, tolong tunjukkan echo "$BASH_VERSION"hasil Anda .
Maka jawabannya: Jika mkdir {1..10}membuat dir dengan nama {1..10}maka Anda menggunakan versi bash sebelumnya bash 3.0-alpha. Dalam hal ini Anda dapat menggunakan konstruksi for for sebagai:
for ((i=1;i<=10; i++)); do mkdir "$i"; done
Periksa versi Bash Anda:
$ 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>
Juga periksa apakah mkdirbelum alias dengan cara yang aneh:
$ alias |grep mkdir
alias md='mkdir'
mkdir {1..10}bekerja untuk saya, itu menciptakan sepuluh dir.