У меня есть сценарий оболочки с двумя функциями. Вторая функция должна запускаться другим пользователем из новой оболочки 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.
Есть ли способ ввести или передать их в новую функцию?
Это задание для отдельных файлов сценариев, а не для функций.
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
Принудительное использование функций здесь будет привести к хакерскому, неуправляемому решению. не делать.