シェルスクリプトで変数を使用してIFS
一部のデータを解析しています(データはすでに特定の形式で提供されています)。デフォルトのIFSはwhitespace/tab / etcで'¬'
あるため、入力ファイル行のフィールドを区切るために文字を使用しています。データは次のようなものです
14352345¬AFSFDG1234¬text¬(http://www.google.com,3)(http://www.test.com,2)¬(www.test2.com,4)¬123-23432
以下を使用して、IFS変数を使用してファイルをwhileループにパイプするスクリプトを作成しました。
#!/bin/bash;
while IFS=¬ read -r sessionId qId testResults realResults queryId;
do echo $sessionId; done < inputFile
(このループ内で、実際に別のファイルを使用してawk処理を実行します)。
このファイルを手動で(./fileだけで)実行すると、完全に機能します。スクリプト(cron)の一部として、または別のスクリプト内で実行すると、IFS変数が使用されていないことを示す解析エラーが発生します。¬
古いIFS変数をコピーして、解析後にリセットしたり、IFS変数を渡すさまざまな方法( 、、、など)を試しましたが'¬'
、$'¬'
役に立たないようです。
任意のポインタ/ヒントをいただければ幸いです。
更新:いくつかの追加のデバッグの後、問題はセパレータではなくawkステートメントにあることが判明しました