Запустите команду оболочки из дочерней оболочки - PullRequest
3 голосов
/ 11 января 2011

У меня есть сценарий оболочки Unix test.sh. В сценарии я хотел бы вызвать другую оболочку, а затем выполнить остальные команды сценария оболочки из дочерней оболочки и выйти

Чтобы было понятно:

test.sh

#! /bin/bash

/bin/bash /* create child shell */

<shell-command1>
<shell-command2>
......

<shell-commandN>

exit 0

Мое намерение - запустить shell-command1 для shell-commandN из дочерней оболочки. Пожалуйста, скажите мне, как это сделать

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Вы можете настроить в группе, как.

#!/bin/bash
(
Command1
Command2
etc..
)

subshell() {
    echo "this is also within a subshell"
}

subshell

(и) создает подоболочку, в которой вы запускаете группу команд, в противном случае подойдет простая функция. Я не знаю, совместим ли (и) с POSIX.

Обновление: если я правильно понимаю ваш комментарий, вы хотите использовать опцию -c с bash, например.

/bin/bash -c "Command1 && Command2...." &
1 голос
/ 11 января 2011

С http://tldp.org/LDP/abs/html/subshells.html вот пример:

#!/bin/bash
# subshell-test.sh

(
# Inside parentheses, and therefore a subshell . . .
while [ 1 ]   # Endless loop.
do
  echo "Subshell running . . ."
done
)

#  Script will run forever,
#+ or at least until terminated by a Ctl-C.

exit $?  # End of script (but will never get here).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...