大虾们,求帮助,谢谢啦

sh/bash/dash/ksh/zsh等Shell脚本
回复
monkey95
帖子: 2
注册时间: 2012-11-29 21:46
系统: OS X

大虾们,求帮助,谢谢啦

#1

帖子 monkey95 » 2012-12-16 11:21

#!/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
xgdgsc
帖子: 277
注册时间: 2010-02-25 11:02
系统: Arch x64

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

#2

帖子 xgdgsc » 2012-12-16 12:50

man一下呗。
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

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

#3

帖子 cao627 » 2012-12-16 13:18

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 : 命令 ,没研究过 , 不懂。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

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

#4

帖子 aerofox » 2012-12-16 20:21

除了了 `` 的用法是 shell 的内容,需要看 shell 的帮助外,其它几个地方都是关于 stty 的,看看 stty 命令的帮助就可以了。

代码: 全选

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

代码: 全选

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