LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 812|回复: 7

请教一个简单的shell问题?

[复制链接]
发表于 2006-12-18 11:37:57 | 显示全部楼层 |阅读模式
如果在启动一个脚步的过程中等待数秒,如果用户按了键盘的某个键,则终止该shell脚步,否则继续运行,这样的shell应该怎样写?
因为我的shell确实太菜,只知道用read可易写交互式的脚步。。。
 楼主| 发表于 2006-12-18 14:07:05 | 显示全部楼层
是这样的,默认下,在开机后自动运行一个程序。但有时候我可能要进入终端,做别的事情。
所以我希望通过以下的方法解决
方法1。 在启动脚步,如rc.local中,默认wait数秒,如果用户输入某个键值,则终止运行,进入终端;否则数秒后自动运行程序,进入图形界面。
方法2。 在启动脚步的过程中按Ctrl+c进入终端。这个方法以前是可以的,但现在不知道为什么不行了(我在终端下直接运行改脚步按ctrl+c是可以的,但在机器启动的过程中就不行。)

各位有别的好方法嘛??
回复 支持 反对

使用道具 举报

发表于 2006-12-18 14:20:54 | 显示全部楼层
something like this probably would work for you.
  1. while read -t 10 -p "any key to exit. " a; do
  2.         case $a in
  3.                 *) echo "break" && exit 1;;
  4.         esac
  5. done
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-12-18 14:27:13 | 显示全部楼层
Post by luofuliang
是这样的,默认下,在开机后自动运行一个程序。但有时候我可能要进入终端,做别的事情。
所以我希望通过以下的方法解决
方法1。 在启动脚步,如rc.local中,默认wait数秒,如果用户输入某个键值,则终止运行,进入终端;否则数秒后自动运行程序,进入图形界面。
方法2。 在启动脚步的过程中按Ctrl+c进入终端。这个方法以前是可以的,但现在不知道为什么不行了(我在终端下直接运行改脚步按ctrl+c是可以的,但在机器启动的过程中就不行。)

各位有别的好方法嘛??

if you need a shell, then you can add a /bin/bash in the code and not exit 1. Many bootup scripts do not accept SIGINT, or SIGQUIT, or SIGTSTP, etc anymore simply because they don't want to be interrupted.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-18 15:49:45 | 显示全部楼层
惨情,用的是busybox的shell,好像不支持read -t 参数。。。
回复 支持 反对

使用道具 举报

发表于 2006-12-18 16:13:31 | 显示全部楼层
那就sleep 10

另外说一句:脚步。。。。。惨情,,,,,,,服你
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-18 17:48:47 | 显示全部楼层
你sleep 10的话恐怕不行吧(效率上都有问题拉)
人家while read -t 10 -p "any key to exit. " a; do还不错的

我最后是从pc上面copy了个bash来用,虽然大了点,但没法,busybox的sh不支持该参数。
回复 支持 反对

使用道具 举报

发表于 2006-12-18 17:51:11 | 显示全部楼层
POSIX不支持,zsh不支持,ksh86不支持,ksh93支持。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表