本物の bash スクリプトを使うのはこれが初めてで、展開と引用にかなり苦労しています。
パラメータ -t が指定された場合は ssh 接続といくつかのリモート mysql コマンドをテストし、パラメータ -r が指定された場合は実際のリモート サーバーでそれらを使用するスクリプトを作成しています。ssh コマンドと mysql コマンドのオプションを変数に格納したいので、-r または -t を指定すると、同じルーチンが使用されます。
簡単に言えば、スクリプトは多かれ少なかれ次のようになります。
sql="SELECT id FROM user WHERE (email LIKE '%a@b.com' OR email LIKE '%c@d.com');"
case "$1" in
-t )
ssh_opts=(localhost -i ~/.ssh/id_rsa)
mysql_opts=(-u root --password=password test);;
-r )
ssh_opts=("-oCheckHostIP no" "-oCompression yes" "-oProtocol 2" "-oProxyCommand connect -4 -S localhost:9050 $(tor-resolve remoteip localhost:9050) 22" remoteip -i ~/.ssh/id_rsa -l httpd)
mysql_opts=('-h mysqlserver' '-P 3306' '-u user' '--password=password' database) -t );;
esac
read -a ids < <(ssh "${ssh_opts[@]}" \"mysql "${mysql_opts[@]" --disable-column-names -B -e \"$'${sql}'\""\")
csv_ids=$(IFS=,; echo "${ids[*]}")
お気づきかもしれませんが、この時点で私は非常に迷っており、これが複雑になりすぎていると感じています。これを適切に行う方法について、誰かがいくつかのヒントを共有できますか?
ありがとうございました