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
動作します。