微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash脚本debian安装程序不接受预先input的用户

我有一个非常小的脚本需要在debian安装程序上运行:( 通过预安装,预安装脚本)

echo -n -e " # Your option [1] [2] [3]: " read REPLY if [ "$REPLY" == "1" ]

脚本停在这里,不pipe我按什么,只是显示在屏幕上,但不接受回车键。 通常情况下,当您按1并按下回车键时,读取应该返回1到$ REPLY。 但没有任何反应。 它保持接受用户input,但不会有进一步的行为发生。

然后,我用ALT + F2切换到tty2,然后在那里运行脚本,没问题,按下时它按预期运行; 它需要input。 为什么tty1不能照常进入?

超过20条命令的Linux Top命令

问题与Bash输出redirect

在dmake中的shell命令添加“/ S”

在bash脚本中,$' 0'会评估什么,为什么?

当使用while循环时Bash退出状态

在返回接地和子处理期间的可变访问性

如何得到脚本是否valgrind发现内存泄漏?

bash:遍历procces输出并终止进程

旧的rsync和文件名中的空格

通过ssh运行程序失败,出现“Error opening terminal:unkNown”。

使用debconf来处理这种配置,它可以像您一样处理完全的需求。

从手册改编的例子

模板文件( debian/templates ):

Template: your_package/select_option Type: select Choices: 1,2,3 Description: Which option? Choose one of the options

脚本( debian/config ):

#!/bin/sh -e # Source debconf library. . /usr/share/debconf/confmodule db_input medium your_package/select_option || true db_go # Check their answer. db_get your_package/select_option if [ "$RET" = "1" ]; then # Do stuff fi

在嵌入式Linux上,遇到与busyBox相同的问题(读取不处理我的输入)。

花了我一些时间来认识到,busyBox的读取不是CR容错的 – 我的终端程序(使用miniterm.py)发送CR / LF行认结束; 切换到LF只解决了我的问题!

用bash解释器,尝试替换读取:

内置读取

与其他sh解释器一起指定变量名称

阅读回复

以下脚本适用于我:

#!/bin/sh echo -n -e " # Your option [1] [2] [3]: " read case $REPLY in 1 ) echo "one" ;; 2 ) echo "two" ;; 3 ) echo "three" ;; *) echo "invalid" ;; esac

如果我选择1,它打印出one很好。 任何你想坚持的原因, if … fi ?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐