сценарий оболочки выполняется дважды

У меня есть этот небольшой фрагмент кода в shellscript для установки пароля:

if [[ -z "${PASS+x}" ]]; then read -p "enter pass or use default [test1234]" PASS if [[ -z "$PASS" ]]; then PASS="test1234" fi fi if [ $EUID != 0 ]; then sudo "$0" "$@" exit $? fi 

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

полный скрипт: github (исправлено уже)

  • Как проверить файлы ~ application / x-trash
  • Определение функции оболочки: почему есть место после открытия скобки?
  • Проверка печати / перекрестная метка в сценарии оболочки
  • Почему «-» в «#! / bin / sh - "shebang?
  • где я должен изменить данный сценарий оболочки?
  • Как перенаправить stdout и stderr в разные файлы
  • Помощь при написании скрипта, который входит в систему и выходит из ssh-сервера
  • сравнение двух файлов по строкам
  • One Solution collect form web for “сценарий оболочки выполняется дважды”

    В вашем полном скрипте, с которым вы ссылаетесь, вы имеете следующее:

     if [ $EUID != 0 ]; then sudo "$0" "$@" exit $? fi 

    Это делается после обработки всех параметров и read которые вы показываете в своем вопросе. Я предполагаю, что вы нажимаете этот блок кода, повторно создаете скрипт с помощью sudo и дважды нажимаете команду read – один раз перед перезапуском скрипта с использованием sudo и после этого.

    Linux и Unix - лучшая ОС в мире.