Как вызвать функцию внутри другой функции, но в другой оболочке

У меня есть сценарий оболочки с двумя функциями. Вторая функция должна запускаться другим пользователем из новой оболочки bash. Первая функция вызывается во второй. Функция 1 использует некоторые переменные скрипта.

#!/bin/bash
foo=bar
function1() {
    echo -e "$1"
}

function2() {
    echo "This is function2"
    function1 "I use function1"
    echo "I also need to print ${foo}"
}
export -f function2
su username -c "/bin/bash -c function2"

На самом деле, эта функция run2 внутри новой оболочки не может найти ни function1, ни foo.

Есть ли способ ввести или передать их в новую функцию?

0
задан 2 January 2018 в 17:41

1 ответ

Это задание для отдельных файлов сценариев, а не для функций.

script1.sh:

#! /bin/bash
echo -e "$1"

script2.sh:

#! /bin/bash
echo "This is script2"
bash script1.sh "I use script1"
echo "I also need to print ${foo}"

И script.sh:

#! /bin/bash
foo=bar
export foo
sudo -Eu username bash script2.sh

Принудительное использование функций здесь будет привести к хакерскому, неуправляемому решению. не делать.

2
ответ дан 2 January 2018 в 17:41

Другие вопросы по тегам:

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