Выполнить команду в другой оболочке

#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 . Ответить на ваш вопрос было бы проще, если бы вы были более конкретны в отношении оболочки. Все они работают немного по-разному…