ファイル名に変数と「_」を使ってはまってしまいました。
まずは以下をご覧ください。
1 |
A=ABC;B=100;kamo.sh > test_log_$A_$B.log |
このコマンドを実行すると、「test_log_ABC_100.log」というファイルができそうですね。
でも、それは間違いです。
なんと作成されるファイルは「test_log_100.log」です!
これ、以下のようにリダイレクトではなく、引数として指定した場合でも同じです。
1 |
A=ABC;B=100;kamo.sh test_$A_$B.conf |
この場合、「test_$A_$B.conf」は「test_100.conf」になってしまいます。
実はこれ、「$A_」でひとつの変数として見られています。
上の式では「$A_」には値を入れていないため、その部分が空になり、後ろの「$B」のみに値が入るわけです。
じゃあ、どうすればよいか。
以下のように「{}」を使います。
1 |
A=ABC;B=100;kamo.sh > test_log_${A}_${B}.log |
これは見落としがちなので、「_」を使用しないで以下のように「-」を使用するようにしたほうが良いかもしれません。
リダイレクトする場合の例。
1 |
A=ABC;B=100;kamo.sh > test_log-$A-$B.log |
引数として指定する場合の例。
1 |
A=ABC;B=100;kamo.sh test-$A-$B.conf |