ターミナルから叩いた時は上手くいったのに
IT(結合テスト)で他プロセスからキックされたら上手く動かない。。
みたいなときって、たまーにあります。
適正なユーザでない
よくあるのは「ユーザが違う」っていうケースです。
結合テストだとバッチ用ユーザなどのシステムユーザから実行されることが多いですが
ターミナルからだとつい自分ユーザで実行してしまいがちです。
結果、ワークディレクトリに書き込み権限がなくてコケたりします。
コーディング中はともかく、UT(単体テスト)の際には可能な限り実際の実行ユーザで実行するようにしましょう。
PATHが通っていない
他に私がハマったのは、「PATHが通ってなくて動いてくれない」ってケースです。
コマンドをちゃんと絶対パスで書いておけば問題ないんですが
それをサボった結果、期待通りの動きをしてくれない、なんてことがありました。
※絶対パスが分からなければ、which コマンドで調べましょう!
エンコードしようとして nkf したのに、変換されないとか、違うバージョンの nkf で変換されたとか
そういうことが起こります。
(追記)
親バッチから子バッチを呼び出しているみたいなケースだと
子バッチに環境変数が受け渡せないみたいなこともあるようです