概要
連番生成時のbashとzshの違いのまとめ
動作確認環境
env&version
% uname -a
Darwin Macmini.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64
% bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
% zsh --version
zsh 5.0.2 (x86_64-apple-darwin13.0)
基本
- 連番を作る
bash&zsh
% echo {1..10}
1 2 3 4 5 6 7 8 9 10
% echo {10..1}
10 9 8 7 6 5 4 3 2 1
応用
- コマンド結果から連番を作る
zsh
% zsh -c 'echo {$(date -r 1388502000 -v -1d +%d)..1}'
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
bash
% bash -c 'echo {$(date -r 1388502000 -v -1d +%d)..1}'
{31..1}
% /bin/sh -c 'eval "echo $(echo {$(date -r 1388502000 -v -1d +%d)..1})"'
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
bashではコマンド結果から連番を生成できないのでコマンド結果をevalした
むろんzshでも動く
zsh
% zsh -c 'eval "echo $(echo {$(date -r 1388502000 -v -1d +%d)..1})"'
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
長い上にわかりにくいので短くした
bash&zsh
% bash -c 'eval "echo {$(date -r 1388502000 -v -1d +%d)..1}"'
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
% zsh -c 'eval "echo {$(date -r 1388502000 -v -1d +%d)..1}"'
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1