Bash Script: не может прочитать ввод после newgrp - PullRequest
0 голосов
/ 20 октября 2019

У меня есть скрипт bash, который создает нового пользователя и добавляет текущий $USER во вновь созданную группу пользователей. Затем я хочу перезапустить сценарий, используя newgrp, чтобы у оболочки были права на чтение / запись для файлов, принадлежащих новому пользователю.

Я ожидаю, что человек в терминале ответит на какой-нибудь ввод. Когда я перезапускаю скрипт, используя newgrp, то read больше не работает. Это полностью обойдено.

Ниже приведен пример, демонстрирующий то же поведение.

do_restart_script_with_updated_permissions () {
local cwd=$(pwd)
export SCRIPT_PATH="$cwd"
newgrp "newgroup" <<EONG
export NEW=true
cd $SCRIPT_PATH
./test.sh
EONG
}


if [ -z "$NEW" ]; then

    echo "We will restart the script."

    read

    do_restart_script_with_updated_permissions

else

    echo "Script restarted."

    # this does nothing
    read  -p "get some input" user_input

    echo "Done."
fi

Вот вывод сценария:

./test.sh 
We will restart the script.

Script restarted.
Done.

1 Ответ

0 голосов
/ 20 октября 2019

Команда sg делает это, все отлично работает с помощью этой функции:

do_restart_script_with_updated_permissions () {
exec sg newgroup $0
}

Ответ найден здесь:

Как использовать newgrp в сценарии, а затем остатьсяв этой группе при выходе из скрипта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...