memo/20230824
created 2023-08-24 modified 2023-08-24
seq というコマンドを知らなかった話(bash の for 文で使える)
例
for i in $(seq 1 5); do echo "i=$i"; done
お恥ずかしい話ですが、 seq というコマンドを今日初めて知りました。
誰向けかわからないけど、見てくれるかもしれない人向けに少し書いてみます。
昨今のAIとかと比べてレベル低い内容ですみません。
bash の 制御文って、他の言語と比べると少し難解です。
for はこんな風に使います。
for i in aaa bbb ccc; do mv $i.x $i.y; done
何が行われるかを知るために、コマンド内容を echo で表示してみます。
for i in aaa bbb ccc; do echo mv $i.x $i.y; done
なお、セミコロンを使わない書き方は以下です。
for i in aaa bbb ccc do echo mv $i.x $i.y done
[keizo@fedora ~]$ for i in aaa bbb ccc; do echo mv $i.x $i.y; done mv aaa.x aaa.y mv bbb.x bbb.y mv ccc.x ccc.y [keizo@fedora ~]$
この例はファイルの拡張子を変えるという話。
やりたいことのうち、 .x を .y に変更する、ことは1つの事なので1回で書く。
ファイル名の aaa bbb ccc の違いは複数の事なので複数で書く。
で、 aaa bbb ccc の各々を i に代入して $i で参照する訳です。
この in の後に書く aaa bbb ccc が、数値の羅列である場合に seq というコマンドが使える、と。
単独で実行すると
seq 1 5
[keizo@fedora ~]$ seq 1 5 1 2 3 4 5 [keizo@fedora ~]$
こうなる。 $(コマンド) でコマンドの実行結果をコマンド文字列に取り込めるので、冒頭のコマンドは、こうなります。
[keizo@fedora ~]$ for i in $(seq 1 5); do echo "i=$i"; done i=1 i=2 i=3 i=4 i=5 [keizo@fedora ~]$
この seq というコマンドを、今日知りましたよ、と。
【* 日々のメモ】