bash で変数のカウントアップをやるには

linux

本日、業務で必要になり、調べたことをまとめてみる。

【やりたいこと】
[hogehoge.txt]
あああああ いいいいい ううううう えええええ おおおおお
あああああ いいいいい ううううう えええええ おおおおお
あああああ いいいいい ううううう えええええ おおおおお

1. hogehoge.txtを1行ずつ読み込む
2. 項目1、項目3をつかって、とあるコマンド文を作り、ファイルへリダイレクト

というようなことをやりたかったわけです。

今回調べてわかったことは、変数のカウントアップを bash でやろうとしたとき、
ちょっと癖があるなということ。
よくあるプログラムのように

i = i + 1

なんて書き方ができないとは知らなかった。。。

結局やりたいことを満たすために、以下のようにしました。

[bash]#!/bin/bash
FILE=/home/hoge/hogehoge.txt
i=0
cat $FILE | while read KEY1 KEY2 KEY3 KEY4 KEY5
do
i=$(($i + 1))
echo "コマンド1" ${KEI1} ${KEY3} "> /home/hoge/"$i".txt" >> /home/hoge/run_command.sh
done[/bash]

調べてみると、いろんな書き方ができるみたいですが、自分はこれで
うまく行ったので備忘録として書いておきます。

実行した結果としては、こんな形になります。

[/home/hoge/run_command.sh]
コマンド1 あああああ ううううう > /home/hoge/1.txt
コマンド1 あああああ ううううう > /home/hoge/2.txt
コマンド1 あああああ ううううう > /home/hoge/3.txt

1000行近くあるデータから作り出すのだから、出来る限り楽をしないとね。
しかし、Linux は bash が使えて便利だ。
Windows だと WSH なり PowerShell なりで記述するしかないけど、ここ
まで簡単にはできないからなー。
オブジェクト宣言、変数宣言だけで何行も必要になるし。

もっとスラスラと bash が書けるようにならねば。。。

コメント

タイトルとURLをコピーしました