현재 YesNoPrompt와 필요한 변수를 사용하여 호출할 수 있는 재사용 가능한 예/아니요 프롬프트로 만들려고 하는 다음 대화 상자 기능이 있습니다.
함수는 다음과 같습니다:
function YesNoPrompt {
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 \
|| exit
sudo reboot
}
그리고 호출되었습니다 :
YesNoPrompt "TITLE" "HLINE" "BACKGROUND TEXT" "YES" "NO" "MAIN MESSAGE"
잘 작동하지만 사용자가 하드 코딩된 종료 대신 "예" 또는 "아니요"를 선택하고 현재 기능이 있는 것을 다시 시작하는 경우 어떤 일이 발생하는지 결정하는 옵션을 전달할 수 있기를 원합니다.
이를 수행할 수 있는 방법이 있습니까?
어떤 아이디어라도 크게 감사하겠습니다.
답변1
dialog
프로세스가 0이 아닌 종료 상태로 종료되면 다음 함수는 매개변수 7의 명령을 실행합니다. 그렇지 않은 경우 - 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
OR 제외 return
)가 다음 sudo reboot
(또는 대체)을 허용할 수 있습니다.반품구현하다. 아마도 당신은 하나 또는 다른 명령을 실행하기를 원할 것입니다. 또한 모든 매개변수를 인용했습니다.
eval
여러 단어를 명령으로 전달하려는 경우 sudo reboot
필수입니다 (예: ). 이로 인해 eval
매개변수가 쉘 해석의 또 다른 라운드를 거치게 되므로 와일드카드나 기타 확장과 같은 항목에 주의해야 합니다.