8
9

More than 5 years have passed since last update.

bashで連番生成

Last updated at Posted at 2014-01-07

概要

連番生成時の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
8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9