Удаленный компьютер доступен по ssh, scp / rsync не работает (больше) [закрыто]

  1. вывод функции может быть перенаправлен в файл, как и для любой другой команды. например
echo "select * from emp" > q.sql
sqlq q.sql > emp.txt
  1. Я бы переписал эту функцию, чтобы ей не требовался временный файл. Я также был бы склонен опустить grep -v (или сделать его необязательным). например
sqlq() {
  local filter
  filter='cat'

  # very primitive, use getopts for real option handling.
  if [ "$1" == "--delete-blank-lines" ] ; then
    filter='grep -v "^$"'
    shift
  fi

  # each arg is piped into sqlplus as a separate command
  printf "%s\n" "$@" | sqlplus -S sss/eee@sid | $filter
}

sqlq --delete-blank-lines 'select * from emp' > emp.txt

# two sql commands:
sqlq 'select * from emp;' 'select * from foo' > empfoo.txt

# that last example works just as well as:
sqlq 'select * from emp; select * from foo' > empfoo.txt
  1. Возможны многие улучшения - например, другие полезные параметры в функции включают:

    • чтение команд sql из stdin вместо использования printf , если он обнаруживает, что он передается по конвейеру
    • , опция для чтения sql из файла
    • способность для передачи произвольных параметров команде sqlplus .
3
18.08.2013, 03:41
0 ответов

Теги

Похожие вопросы