数値の前のゼロを除いて、 bash から 08 から 10 までの数値範囲を作成します。

数値の前のゼロを除いて、 bash から 08 から 10 までの数値範囲を作成します。

CentOS 7.2を実行しているローカルコンピュータで、次の操作を行います。

for i in {8..12}; do echo ${i}; done

私は持っています:

8
9
10

しかし、私がこれを行うと:

for i in {08..10}; do echo ${i}; done

私は持っています:

08
09
10

ただし、私がアクセスできるCentOS 5.6を実行しているサーバーで次の2つのコマンドを実行すると、同じ出力が生成されます。

8
9
10

なぜ8と9の前に0がないのですか? bashバージョンのせいですか、それとも環境設定のせいですか?サーバーが10未満の数字の前にゼロを入れるようにセッションごとにまたは永続的に変更できますか?

ベストアンサー1

CentOS 5.6システムのバージョンはbashバージョン3である可能性が高いです。中括弧拡張の整数ゼロパディングはのバージョン4で導入されましたbash

回避策は、インストールをbash最新バージョンに更新するか、ゼロで埋められた整数を生成する代替方法を使用することです。

printf '%02d\n' {8..10}

または、次のようなもの

for i in 0{1..9} {10..20}; do
    echo "$i"
done

動作します。

おすすめ記事