Можно ли передавать команды как переменные в сценарий --dialog?

Итак, наконец-то я понял, я выполнил следующие шаги:

Общий доступ к Интернету в Linux (I)-Wi-Fi в локальную сеть (NAT)

Но я думаю, что мне все еще нужно сделать еще один шаг, установить статическую маршрутизацию на сетевом маршрутизаторе, чтобы я мог получить доступ к подсети eth0 pi с любого устройства в основной сети.

Завтра попробую на работе.

3
15.10.2019, 19:13
1 ответ

Приведенная ниже функция выполняет команду в параметре 7, если процесс dialogзавершается с ненулевым -статусом выхода; иначе --если dialogуспешно завершится --функция выполнит команду в параметре 8.

function YesNoPrompt {
    if ! dialog --begin 2 1 --no-shadow --title "$1" --hline "$2" \
        --backtitle "$3" --yes-label "$4" --no-label "$5" \
        --yesno "$6" 26 38 20>&1 > /dev/tty
    then
      eval "$7"
    else
      eval "$8"
    fi
}

Я переработал логику с ||на полноценный -развернутый if/then/elseоператор; в противном случае ваша замена exit(, если это не exitили return), может позволить выполнить последующуюsudo reboot(или замену )на также . Предположительно, вы хотите, чтобы выполнялась только одна или другая команда. Я также привел все параметры.

evalнеобходим, если вы хотите передать более одного слова в качестве команды (, напримерsudo reboot). Обратите внимание, что evalзаставляет параметр пройти еще один цикл интерпретации оболочки, поэтому остерегайтесь таких вещей, как подстановочные знаки или другие расширения.

2
27.01.2020, 21:24

Теги

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