コマンドラインの構文エラーを解消するにはどうすればよいですか? 次のような bash スクリプトを作成しました。
#!/bin/bash
USER="$@"
sed 's/[!@#\$%^&*()]//g'> $@
done
if ! [ -f $@ -a -r $@ ] ; then
echo "Wrong Option : "${USER}" is not readable or not exist" >&2
exit -1
fi
cat "${@}"|while read -r line
do
IFS=, read -r f1 f2 f3 f4 f5 <<< "$line"
mysql --user=user --password=password --database=database <<EOF
INSERT INTO table_name VALUES($f1,'$f2','$f3','$f4',$f5);
EOF
done
そして、このスクリプトを他の端末で次のように実行します。
$ ./script.sh test!rr.txt
-bash: !rr.txt: event not found
実際には、これはテキスト ファイルからデータベース テーブルにデータを挿入するスクリプトです。ご覧のとおり、テキスト ファイルを挿入する前にファイルの存在を確認したいと考えています。
コマンドラインの構文エラーを解消するために tr -d コマンドと sed コマンドを使用しようとしましたが、うまくいかないと思います..
私の期待は次のとおりです。
$ ./script.sh test!rr.txt
Wrong Option : test!rr.txt is not readable or not exist
何か考えはありますか?ありがとう。