首页 > TroubleShooting > shell程序里限制回显的用处

shell程序里限制回显的用处

2012年3月1日 发表评论 阅读评论

群里一个小朋友问了个问题,具体说不明白,用代码表示吧。

#!/bin/bash

while true
do
	echo -en "\rname:"
	read name
	if [ "${name}"x = ""x ]; then
		continue
	else
		echo -e "\nname is:${name}"
		break
	fi
done

这段代码有个问题,就是当直接输入回车的时候,会在下一行显示“name:”,而小朋友想实现的是不要在下一行显示“name:”,而是直接在本行显示“name:”,搞半天,终于解决了,代码如下:

#!/bin/bash

while true
do
	stty -echo
	echo -en "\rname:"
	read name
	stty echo
	if [ "${name}"x = ""x ]; then
		continue
	else
		echo -e "\nname is:${name}"
		break
	fi
done

这里的思路就是关掉回显,这个想法也是一开始的想法,但是当时奇怪的是用read的参数”-s”(也是关掉回显)来搞却又不行,以至于我认为这个思路有问题,结果最后还是回到这个思路上来,而且终于解决问题了。现在新问题来了:

stty -echo

read -s

有什么区别的问题了,留个坑,下回有时间研究下。

分类: TroubleShooting 标签: , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.