На самом деле существует гораздо более простой способ сделать это. Для переносимости это моя реализация, но вы можете свободно манипулировать ею в соответствии с вашими потребностями.
Введите свой пароль sudo в качестве параметра при запуске сценария, перехватите его и повторяйте его с каждой командой, которая запросит пароль sudo.
#!/bin/bash
PW=$1
echo $PW | ./playback_delete_data_patch.sh 09_delete_old_data_p.sql
./command_wo_sudo.sh <param>
echo $PW | ./other_command_requires_sudo.sh <param>
Вы можете добавить подсказку и захват после запуска скрипта следующим образом:
echo "enter the sudo password, please"
read PW
Но если кто-то еще отслеживает, что работает на узле; имеет доступ к созданным им журналам; или просто просматривает ваш случайный случай при запуске теста, что может поставить под угрозу безопасность.
Это также работает с запущенными командами / сценариями, для продолжения которых требуется yes:
echo $PW | yes | ./install.sh
Эхо является ответом на приглашение, так что вы можете использовать все, что вам нужно, там, если вы запускаете другие сценарии, у которых есть запросы на выполнение, в последовательном порядке. Убедитесь, что вы знаете этот порядок, иначе могут произойти плохие вещи.