シェル(bash)のforループを使うとスペース区切りの文字列でループしてコマンドを実行することができます。(参考:forループに関する覚え書き)
便利な機能ですがスペースではなく改行\n
でループしたい場合もあるかと思います。そういう場合にはIFS
を使ってdelimiterを変更するテクニックがあるそうです。
使い方
今回は次のようなテキストファイルを使って1行ずつコマンドを実行するサンプルを紹介してみます。
$ cat example.txt
aaa 12 34
bbb 56 78
ccc 90 12
普通にforループした場合
$ for i in `cat example.txt`; do echo $i; done
aaa
12
34
bbb
56
78
ccc
90
12
delimiterを\n
に設定した場合
$ IFS=$'\n'
$ for i in `cat example.txt`; do echo $i; done
aaa 12 34
bbb 56 78
ccc 90 12
こんな感じで1行ずつコマンドを実行できます。
関連記事
シェル(bash)のforループに関する覚え書き
シェル(bash)のforループに関する覚え書き
forループ
使い方
$ for i in 1 aa 012; do echo $i; done
1
aa
012
1~100の数字でforループしたい場合
$ for i in {1..100} do echo $i; done
1
2
3
... 以下、省略
...
Bashで連続した数字のループを回す簡単な方法
{1..5}のようにすることで、1〜5でループすることができます。
for i in {1..5}
do
echo $i
done
{..}はループ以外でも使うことができるので便利です。
$ touch file-{1..5}.txt
$ ls
file-1.txt file-2.txt file-3.txt file-4.txt file-5.txt
リンク...
Shellスクリプトでcase文の使い方メモ
bash(sh)でcase文を書くときの基本は次のような感じです。
case $変数 in
パターン1)
実行したい内容1
;;
パターン2)
実行したい内容2
;;
esac
ということで、case文でよく使われるパターンを2つほど紹介してみようと思います。
曜日ごとに異なる内容を実行したい場合(cronで便利です)
case `...
bashのスクリプトでif節やelif節を空にするとエラー
bashのスクリプトでifを使う時、then〜fi間に何のコマンドも含んでいないスクリプトはエラーになってしまいます。
if [ $value = "abc" ]
then
# 何もしない
fi
エラーの内容
bash: syntax error near unexpected token `fi'
何もしない分岐は削除すればいいだけですが、elif節やels...