Bash 在rpm软件包安装期间从%post脚本中的活动tty读取

Bash 在rpm软件包安装期间从%post脚本中的活动tty读取,bash,tty,Bash,Tty,我已经构建了自己的rpm包。安装后,我需要用户通过键盘输入提供一些信息,因此我创建了一个post脚本,如果我从bash启动它,它可以正常工作 在第一步中,脚本将询问值是否正确。如果按Nn,则要求输入新的。以下是一个例子: while [[ ! ($REPLY =~ ^[NnJjYy]$) ]] do read -p "This is just an example, pleaser answer with NnJjYy only" -n 1 -r < $(tty) if [

我已经构建了自己的rpm包。安装后,我需要用户通过键盘输入提供一些信息,因此我创建了一个post脚本,如果我从bash启动它,它可以正常工作

在第一步中,脚本将询问值是否正确。如果按Nn,则要求输入新的。以下是一个例子:

while [[ ! ($REPLY =~ ^[NnJjYy]$) ]]
do
    read -p "This is just an example, pleaser answer with NnJjYy only" -n 1 -r < $(tty)
    if [[ $REPLY =~ ^[Nn]$ ]] 
    then 
        printf "\nValue=" 
        read HOST < $(tty)
    fi
    echo
done
while[[!($REPLY=~^[NnJjYy]$)]
做
阅读-p“这只是一个示例,请仅用NnJjYy回答”-n 1-r<$(tty)
如果[[$REPLY=~^[Nn]$]]
然后
printf“\n值=”
读取主机<$(tty)
fi
回声
完成
如果我直接运行此部件,它工作正常。如果我把它放在规范文件的
%post
-部分,它将作为一个无休止的循环运行,带有errormsg“Mehrdeutige Umlenkung”,这在英语中应该是“amibigious redirect”的意思

我认为这个问题是由read命令的“$(tty)”引起的,因为如果我将其更改为活动的tty(例如/dev/pts/0),它会工作,但我希望它是通用的


你知道我该怎么做吗?

这是个坏主意。RPM可以(而且通常)通过自动化流程安装,在自动化流程中,既没有连接的TTY,也没有人来回答问题。也就是说,是的
tty
很可能是问题所在,因为它可能不会返回任何在此上下文中可用的内容(出于上述和相关原因)。RPM安装意味着完全非交互式。如果您需要向用户提问,请包括一个安装脚本,该脚本可以在安装包后显式运行。谢谢,我会这样做的。我不熟悉rpm PKG,但熟悉debians debs。我只记得,如果您通过apt get安装mysql服务器或phpmyadmin,则会在pkg安装后立即启动安装向导。这是apt get debs和yum RPM的区别吗?(非交互式安装)