ディレクトリ内のすべてのテキスト ファイルの LOAD DATA IN ステートメントを 1 つの出力ファイルに生成しようとしています。ファイルは | で区切られます。または TAB があるので、head -1 $file コマンドで各ファイルをテストして、| が含まれているかどうかを確認することにしました。正しい負荷を出力しますが、実行されていません。case ステートメントは if ステートメントがなくても問題なく実行されるため、if ステートメントに絞り込みました。これはネストされた if ステートメントの正しい構文ですか?
#!/bin/bash
for file in *.txt
do
case $file in
*_TEST1_*)
firstLine=`head -1 $file`;
if [[ $firstLine =~ "|" ]]
then
echo "LOAD DATA INFILE '/Data/"$file"' INTO TABLE testtable FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '' LINES TERMINATED BY '\n' ignore 1 lines;" >> output.txt;;
else
echo "LOAD DATA INFILE '/Data/"$file"' INTO TABLE testtable FIELDS TERMINATED BY ' ' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '' LINES TERMINATED BY '\n' ignore 1 lines;" >> output.txt;;
fi
*_TEST2_*)
echo "LOAD DATA INFILE '/Data/ "$file"' INTO TABLE testtable2 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '' LINES TERMINATED BY '\n' ignore 1 lines;" >> output.txt;;
esac
done
アップデート
同じ問題が発生した場合は、以下の私の回答をご覧ください。