Bashでスクリプトを引数付きで繰り返し実行するには

以下のような、引数に渡されたデータをパーセントデコードするスクリプトがあったとします。
url01.png
上記の場合はパーセントエンコードの処理が一回のみだったので、デコードの処理も一回で済みました。

もしエンコード処理が複数回 施されていたとしたら、どうでしょう。
url05.png

スクリプトを実行して、デコード結果をコピペして、またスクリプトを実行して。。。なんてことを手動でするのは面倒でイケてないです。エンコード処理が100回とかされていたら、途中で心が折れてしまうでしょう。

そんなときは以下のワンライナー試してみましょう。

arg=value; for i in {1..5}; do arg=$(sh your-script.sh $arg); echo $arg; done

今回の用途に合わせると以下のようになります。

arg=%25252525e3%2525252581%25252525bb%25252525e3%2525252581%2525252592%25252525e3%2525252581%25252525b5%25252525e3%2525252581%252525258c; for i in {1..5}; do arg=$(python urldecode_utf-8.py -s $arg); echo $arg; done

※ループの回数がはっきりしないときは、for文のループカウンタを適当に大きな値に設定するか、あるいは for i in {1..5}; を while true; に置き換えて無限ループにすれば OK

実行。
url04.png

楽チンですね。

以上。

Leave a Reply

Your email address will not be published. Required fields are marked *