同じコマンドを繰り返すシェルスクリプト

ターミナルでの作業の時に, 同じコマンド繰り返し処理したいという時があると思います. 例えば, データをとるときなどは, 毎回コマンドを入力するのは面倒ですよね. なので, 引数のコマンドを指定した回数だけ繰り返すシェルスクリプトを作ってしまいましょう.

私は, 以下のコードをiterateという名前で保存してあります. よって, 使い方の説明では, iterateというコマンド名になっています.


#!/bin/sh

if [ $# -lt 2 ]; then
	echo "繰り返しの回数とコマンドを入力してください."
	echo "e.g. 3 echo \"hello world\""
	exit 1
fi

count=1
for arg in "$@"
do
	if [ $count -gt 2 ]; then
		argstr=$argstr" "$arg
	fi
	count=`expr $count + 1`
done

for i in `seq 1 1 $1`
do
	$2 $argstr
done
            

上のコードの使い方は, 次のようになります.


$ iterate 3 echo "hello world"
hello world
hello world
hello world
            

つまり, 使い方は, "iterate 繰り返し回数 コマンド コマンドの引数" のような形式になります.