1

不明な列名で多くの同様の問題を見つけましたが、これと同じことを報告するものはなく、迷っています:

エラー 1054 (42S22) 1 行目: 「フィールド リスト」の不明な列「tad.sh」

「tad.sh」は、bash スクリプト自体の名前です。

コード:

#!/bin/sh
FPATH="/home/bermans/CHIT/"
DATE="$(date +"%d-%m-%Y")"
FNAME="transfer-authority.csv"
HEADS="\"Time\", \"Urgent\", \"Initials\", \"Transfer from\", \"From description\",    \"Transfer to\", \"To description\", \"Sum\", \"In respect of\""

params="-u #### -p#### chit"
s1="SELECT "
s2=" UNION"
s3=" SELECT *"
s4=" FROM \`transfer-authority\`"
s5=" WHERE Time > DATE_SUB( NOW( ) , INTERVAL 24 HOUR )"
s6=" INTO OUTFILE "
s7=" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"'"
s8=" LINES TERMINATED BY '\n'"
selectend=";"

echo $s1$HEADS$s2$s3$s4$s5$s6\'$FPATH$DATE$FNAME$\'$s7$s8$selectend | mysql $params

過去 24 時間に作成されたエントリの毎日のヘッダーを含む CSV ファイルを作成したいと考えています。これを cronjob として実行し、電子メールでファイルを削除します。

どんな助けでも大歓迎です。

ありがとうございました

4

2 に答える 2

2

echo ステートメントの一部を削除する| mysql $paramsと、厄介な驚きがあります ;-)

問題は、ステートメントs3=" SELECT *"に挿入され、シェルによってワイルドカードとして解釈されることです。これは、コンソールに次のように入力する場合と同じです。echo*

echo *

引数を二重引用符で囲んでみてくださいecho(単一引用符をエスケープする必要はなくなります)。

echo "$s1$HEADS$s2$s3$s4$s5$s6'$FPATH$DATE$FNAME$'$s7$s8$selectend"
于 2013-01-17T15:54:56.960 に答える
0

使ってみてください

mysql -u #### -p#### -e $s1$HEADS$s2$s3$s4$s5$s6\'$FPATH$DATE$FNAME$\'$s7$s8$ chit
于 2013-01-17T15:46:30.263 に答える