原帖由 _will_ 于 2006-3-29 15:17 发表
谢谢楼上两位
echo -e "\r" | ./A.sh好象还是不行,好象的确是不能用管道,但我这个A.sh只是一个例子,实际的那个脚本里的代码是不能改的,所以也不能用 read -u 1 varname,难道真没有别的的方法了?
原帖由 r2007 于 2006-3-29 15:22 发表
试试这个
复制代码
- (echo;read;echo)|./A.sh
原帖由 yjh777 于 2006-3-29 15:29 发表
不能改脚本的话,
那你就研究一下expect吧,听说她是专门解决交互式程序非交互化的。
研究出来,别忘了给大家分享一下。
[code]
#! /usr/bin/expect -f
# Change a login shell
set passwd "123 ...
原帖由 r2007 于 2006-3-29 15:52 发表
了解一下管道和重定向就会明白了。
去掉一个echo也得到同样的结果,是因为脚本A中第二个read命令在等待输入时,由于管道前端的subshell已经结束造成管道破裂,致使read ans返回空值,而脚本并没有加以判断,所以 ...
原帖由 r2007 于 2006-3-29 15:52 发表
了解一下管道和重定向就会明白了。
去掉一个echo也得到同样的结果,是因为脚本A中第二个read命令在等待输入时,由于管道前端的subshell已经结束造成管道破裂,致使read ans返回空值,而脚本并没有加以判断,所以 ...
原帖由 waker 于 2006-4-3 08:50 发表
to yjh777
再仔细读r007的回贴,他已经解释的很清楚了
原帖由 yjh777 于 2006-4-3 09:13 发表
你先写一个脚本试一下,那些值确实没有传给管道后的脚本。
原帖由 waker 于 2006-4-3 09:19 发表
你在怀疑所有bash用户的智商么?
俺是不会去试1+1是不是=2的
原帖由 waker 于 2006-4-3 10:06 发表
如果你想让后面的 read ans读入输入的值,小改一下不就行了么?
(echo; read preans;echo $preans)|./A.sh
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |