#shell #unix
#оболочка #unix
Вопрос:
Где я работаю, у нас есть команда, назовем ее kuku
, которая при вызове перенаправляет меня в новую оболочку. т.Е. я получаю:
old_shell> kuku
kuku> exit
old_shell> ...
Мне нужно запустить определенный скрипт в kuku
оболочке, но я не хочу вручную вводить его и / или оставаться там. т.е. я хотел бы использовать что-то вроде kuku; <do stuff>; exit;
. Однако это не сработает, поскольку после ее ввода kuku
она не переходит к другим командам.
Есть ли какой-либо способ открыть оболочку, передать ей несколько команд и автоматически завершить работу?
Ответ №1:
Это сильно зависит от того, как kuku
работает. Если kuku
она более или менее совместима с другими оболочками, то kuku -c "cmd1; cmd2"
должно сработать.
Другой вариант — поместить команды для kuku
в файл script.kuku
, а затем запустить его с помощью kuku < script.kuku
.
Наконец, expect
или любой из его клонов может быть использован для автоматизации практически любой команды.
Ответ №2:
Документация kuku
должна рассказать вам, как передавать команды в kuku
оболочку для выполнения (например, используя файл сценария, используя стандартный ввод, попробуйте man kuku
). Если kuku не предоставляет таких функций, возможно, вам захочется взглянуть на Expect.
Ответ №3:
Допустим, у вас был вызван сценарий оболочки mostlyharmless.sh это «делает вещи», тогда в примере ssh вы бы написали ssh user@server 'bash -s' < mostlyharmless.sh
. Ответить на ваш вопрос было бы проще, если бы вы были более конкретны в отношении оболочки. Все они работают немного по-разному…