分页: 1 / 1

大虾们,求帮助,谢谢啦

发表于 : 2012-12-16 11:21
monkey95
#!/bin/bash

INTERVAL=5

timeout_read()
{
timeout=$1
varname=$2
old_tty_setting=`stty -g` #这句话是什么意思?
stty -icanon min 0 time ${timeout}0 # stty -icanon 是什么意思?
eval read $varname #eval 是干嘛的?
stty "$old_tty_setting" #stty又是干什么的?
}

echo;echo -n "What's your name? Quick!"
timeout_read 3 your_name

echo

if [ ! -z "$your_name" ]
then
echo "Your name is $your_name"
else
echo "Time out"
fi

echo

exit 0
:em20

Re: 大虾们,求帮助,谢谢啦

发表于 : 2012-12-16 12:50
xgdgsc
man一下呗。

Re: 大虾们,求帮助,谢谢啦

发表于 : 2012-12-16 13:18
cao627
var=`command` :将command命令的执行结果显示赋值给var。

eval :对其后的命令行先做替换处理,再交给shell。
比如:

代码: 全选

a=b
b=c
echo \$$a
$b  
eval echo  \$$a      #eval先将 echo \$$a 处理变为 echo $b
c                               #shell 执行echo $b  得到的结果
stty : 命令 ,没研究过 , 不懂。

Re: 大虾们,求帮助,谢谢啦

发表于 : 2012-12-16 20:21
aerofox
除了了 `` 的用法是 shell 的内容,需要看 shell 的帮助外,其它几个地方都是关于 stty 的,看看 stty 命令的帮助就可以了。

代码: 全选

stty -icanon
关闭erase, kill, werase, 和 rprnt 这些特殊字符(这些字符默认为 ^?(或^H)、^U、^W和^R),有些 shell自己会处理这些字符,所以关闭了也可能不会感觉到差别。运行 /bin/sh,然后就可以发现这些字符不起作用了。

代码: 全选

stty -g
以stty 可读取的格式输出当前全部设置,后面可以用 stty 命令恢复原来的终端设置。