-1

本物の 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[*]}")

お気づきかもしれませんが、この時点で私は非常に迷っており、これが複雑になりすぎていると感じています。これを適切に行う方法について、誰かがいくつかのヒントを共有できますか?

ありがとうございました

4

1 に答える 1