ブレースの拡張がサポートされていないのはなぜですか?


9

ブレース拡張を開始するために構成を行う必要がありますか?実行mkdir {1..10}すると、dir命名が作成されるだけ{1..10}です。


mkdir {1..10}私のために働く、それは10日を作成します。
容疑者

2
echo ${SHELL}この質問を有用な回答が得られるように追加することをお勧めします。
2015

回答:


10

以下のようなブレース展開ながら{1,2}に由来するcsh70年代後半では、とボーンのような内殻に向かう途中見つかっbash/ zsh/ pdksh80年代後半では、90年代初頭に、{n1..n2}バリアントは、最初に、後に来たzsh1995年(2.6-beta4)。

bash2004年(3.0)およびksh932005年(ksh93r)にコピーしました。

おそらく、これを試そうとしているシェルは、どちらでもないか、bashおよびの古いバージョンですksh93


私たちは彼がどんなシェバンクシェルを使ったかについて考えるべきです。/私はそれが疑っている#!/bin/sh...
ポールモン

3
@polemon、それは必ずしも助けにはならないでしょう。たとえば、一部のシステムで/bin/shbashまたはksh93です。
ステファンChazelas

2
私は実際にそうだと思います:呼び出しによっては、呼び出されたシェルは歴史的なものとして/bin/sh 機能しますsh(とにかくbashのmanページに書かれているとおりです)。kshのmanページはチェックしていませんが、それに応じて動作するはずです。
ポールモン2013

1
@ user43312:なぜまだRH9を使用しているのですか?それは何年もの間維持されていません。AS Stephaneは最近のbashバージョンの機能であると書いています。したがって、bashのバージョンがそれをサポートしていることはほとんどありません。bash --versionを使用してバージョンを確認できます。そして、$ SHELL変数をチェックするか、単にpsを実行して、bashシェルを実行しているかどうかを確認します。この機能を使用するには、zshまずzshシェル()を起動してみてください。別の回避策は、「mkdir $(seq 1 10)」のようなものを使用することです。
Bram

1
@polemon 別のシェルの模倣ではなく、別のシェルの起動時の動作(起動時にソースとなるファイル)。
Chris Down

4

{x..y}範囲ブレース拡張はbash 3.0-alphaで実装されています。私たち自身を助けるために、あなたのecho "$BASH_VERSION"出力を見せてください。

次に答え:mkdir {1..10}名前でディレクトリを作成する場合 は{1..10}、bashバージョンbeforeを使用していますbash 3.0-alpha。その場合、次のようにforループを使用できます。

for ((i=1;i<=10; i++)); do mkdir "$i"; done


1

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>

またmkdir、奇妙な方法でエイリアスになっていないことも確認してください。

$ alias |grep mkdir
alias md='mkdir'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.