0

cron からスクリプトを実行すると問題が発生します。まず、SQLite へのアクセスに問題があることがわかりました。今、私を夢中にさせているのはAWKコマンドです。

問題のある行は次のとおりです。

sens=`awk -F, '{ if($2 == '${num}' && $4 == '$tipogalis' && $9 == "0")print $1 }' /usr/xbow/xserve/galtel/relasens`

詳細に煩わされたくありません。ファイル内の列の値を読み取らなければならないのは、while ループのメインラインです。コマンドラインからは完全に機能しますが、cron ジョブとして実行すると、変数「sens」に値が与えられません。

行内のすべての変数 (num、tipogalis など) が正常に読み取られることを既に確認しているので、問題は「&&」の量または「print」機能に関連していると確信しています。

誰かが環境変数について何か提案したい場合に備えて、スクリプトの先頭に次の行を追加しました。

LANG=en_US.UTF-8
export LANG

しかし、違いはありませんでした。

他に何か提案はありますか?私は問題が本当に小さいに違いないことを知っています。悪魔はいつも細部に...

4

2 に答える 2

0

cron で実行したときに変数numと変数が正しい値を保持していることを確認したと思います。tipogalis

awk if ステートメントの定数を引用符で囲んでいないと思います。

sens=`awk -F, '{ if($2 == "'${num}'" && $4 == "'$tipogalis'" && $9 == "0")print $1 }' /usr/xbow/xserve/galtel/relasens`

-v引用符をつなぎ合わせるのではなく、値を awk に渡すオプションを使用します。

sens=$(awk -F, -v val2="$num" -v val4="$tipogalis" '$2 == val2 && $4 == val4 && $9 == "0" {print $1}' /usr/xbow/xserve/galtel/relasens)
于 2012-04-11T13:22:17.830 に答える
0

結局、正しい方法はこれでした:

感覚=awk -F, '{ if($2 == '${num}' && $4 == '$tipogalis' && $9 == '0')print $1 }' /usr/xbow/xserve/galtel/relasens

しかし、問題はラインではありませんでした。内部の問題により、'0' と等しくない $9 に対してコールが行われました。

ごめんなさい。この投稿は、他のユーザーの混乱を避けるために完全に消去することもできます.

于 2012-04-12T11:40:41.413 に答える