読者です 読者をやめる 読者になる 読者になる

はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

シェルスクリプトでC言語のfor文と同等のことをする

f:id:secret_hamuhamu:20151010192133j:plain
シェルスクリプトのfor文って他の言語にあるforeachのようなもので、回数による繰り返しではありません。
しかし、少し工夫をするとシェルスクリプトでもC言語のfor文と同等のことが出来ます。

C言語のfor文

C言語による1 ~ 10を繰り返し出力するコード。

#include <stdio.h>

int main(){
  for (int i = 1; i <= 10; i++){
    printf("%d\n", i);
  }
}


シェルスクリプトのfor文

シェルスクリプトによる1 ~ 10を繰り返し出力するコード。

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

ただしこの記法は、1つづインクリメントする方法しか出来ません。

2以上をインクリメント又はデクリメントしたい場合、seqコマンドと組み合わせることで実現できます。


# 1 ~ 10まで順番に出力
for i in `seq 1 10`; do
  echo "$i"
done

# 1, 4, 7, 10の順番に出力
for i in `seq 1 3 10`; do
  echo "$i"
done

# 1, -2, -5, -8の順番に出力
for i in `seq 1 -3 -10`; do
  echo "$i"
done

seqコマンドは、引数が2つであれば seq 初期値 最終値 となる。
引数が3つであれば、 seq 初期値 間隔 最終値 となる。

おすすめの本

シェルプログラミング実用テクニック

シェルプログラミング実用テクニック

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門

フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門

覚えて便利 いますぐ使える!シェルスクリプトシンプルレシピ54

覚えて便利 いますぐ使える!シェルスクリプトシンプルレシピ54