Isso funcionou para mim (Anaconda, Fedora 20):
%pre --log=/tmp/ks_pre.log
#!/bin/bash
# Backup fds in temporal ones
exec {STDOUTBACK}>&1
exec {STDERRBACK}>&2
# Go to current terminal for pre% section
exec 1>>/dev/pts/0
exec 2>>/dev/pts/0
# Show message
whiptail --yesno 'Do you like StackOverflow?' --yes-button 'Yes' --no-button 'No' 10 70
if [ $? = 1 ]
then
echo 'User sucks' >> /tmp/ks_pre.log
else
echo 'User rocks' >> /tmp/ks_pre.log
fi
# Restore fds
exec 1>&$STDOUTBACK
exec 2>&$STDERRBACK
# Close temporal fds
exec {STDOUTBACK}>&-
exec {STDERRBACK}>&-
%end
Possíveis perguntas:
-
Por que você usou
/dev/pts/0
?Como no console do Anaconda, descobri que dispositivo estava sendo usado como stdin para os scripts em execução no
pre% section
. Eu acho, poderia ser outro dependendo das versões do RedHat e do Fedora. Mas é muito fácil descobrir qual é a correta para o seu caso. -
Quais são as coisas
exec {STDOUTBACK}>&1
eexec {STDOUTBACK}>&-
?Acesse o
man bash
e pesquise a seçãoREDIRECTION
, onde você pode encontrar o seguinte:
Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {varname}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a file descriptor greater than 10 and assign it to varname. If >&- or <&- is preceded by {varname}, the value of var‐ name defines the file descriptor to close.