繰り返し制御するからこそ、コンピュータの活用と言えます。
ムーアやポラックの法則のとおり、コンピュータの処理能力は年々向上してきました。
対して、人間の計算能力はいくら訓練しても、進化するコンピュータにどんどん引き離されていくのは明白です。
人の時は有限ですので、同じ作業は繰り返さず、単純作業の繰り返しなど雑用は全部コンピュータに任せたいものです。
関連記事はコチラ
https://life-is-command.com/linux-command-beginner/
コンピュータに使われる人ではなく、コンピュータを使う人になりましょう。
コマンドラインで繰り返し制御する方法は多々ありますが、bash(v4.3で確認しています)での、かつ一部の機能を使って行きたいと思います。
まずは、1〜10までの数字を表示する繰り返し制御です。forコマンドを使って、C言語風に書くことができます。
~$ for((i=1;i<=10;i++));do echo $i;done 1 2 3 4 5 6 7 8 9 10 ~$
ちなみに私は、コマンドライン上で()等の括弧を使うのを好みません。
シフトキーを押す必要があるからです。せっかくコマンドラインを使うのだから、さくさくキー入力したいのです。
また、for〜inを使うことで、空白で区切った要素の数だけ繰り返しをすることができます。
~$ for i in AAA BBB CCC;do echo $i;done AAA BBB CCC ~$
bashブレース展開や、コマンド単体で数列を生成することもできます。
~$ echo {1..10} 1 2 3 4 5 6 7 8 9 10 ~$ seq 10 1 2 3 4 5 6 7 8 9 10 ~$
for〜inと{}やseqを併用することで、for((;;))と同じように繰り返し制御することができます。
~$ for i in {1..10};do echo [$i]`expr $i \* $i`;done [1]1 [2]4 [3]9 [4]16 [5]25 [6]36 [7]49 [8]64 [9]81 [10]100 ~$ for i in `seq 10`;do echo [$i]`expr $i \* $i`;done [1]1 [2]4 [3]9 [4]16 [5]25 [6]36 [7]49 [8]64 [9]81 [10]100 ~$
{1..10}の書き方の方が分かりやすいかもしませんが、私はバッククォートを使う`seq 10`の方を好んでよく使います。seqではなく他コマンドを使う場合、たとえば`find`と変更するとき、バッククォートを使う癖をつけていると、コマンド入力の打ち間違いが少なくなるからです。
繰り返し制御するにはfor以外にもwhileが使えます。:(コロン)を指定すると常に真となり無限ループになります。
~$ while :;do date +%T;sleep 1;done 12:26:32 12:26:33 12:26:34 12:26:35 12:26:36 ^C ~$
whileには条件式を書くことができますが、コマンドラインではあえて無限ループしか使わないようにしています。
コメント