Nic3500 проделал довольно хорошую работу, но позвольте мне добавить, что оболочки - это процессы, а функции не экспортируются в подпроцессы. Когда вы определили функцию sel1
, вы были в родительской оболочке. Вы запустили MySQL, процесс 2 и попытались запустить sel1
, запустив \!
, который производит процесс 3.
Это можно увидеть, просмотрев идентификатор процесса оболочки, запустив MySQL и снова просмотрев идентификатор процесса. Я просто попробовал это и получил:
$ bash
$ function sel1 {
> echo "select * from table limit 1;"
> }
$ sel1
select * from table limit 1;
$ export sel1
$ bash
$ sel1
bash: sel1: command not found
Если у вас сложная функция, вам нужно будет запустить сценарий, который определяет функцию, а затем вызвать функцию в том же \!
вызове.
Что касается отправки вывода функции в местоположение курсора, я полагаю, что вы хотите запустить скрипт, который, скажем, производит выбор в приглашении sql. Для этого, я думаю, вам лучше всего использовать оболочку для создания сценария, который вы затем запустите.