Shell:有没有办法避免rsh来清理printf缓冲区?

时间:2017-12-08 20:48:31

标签: printf sh

我想在脚本中执行一些条目序列。在我的脚本中,我使用rsh并使用它来清理printf缓冲区。

我使用2个脚本。一个脚本是这样的: test1.sh

VAL=""
while [ "${VAL}" != "x" ]
do
    read VAL
    echo $VAL
done

其他脚本如下: test2.sh

VAL=""
while [ "${VAL}" != "x" ]
do
    read VAL
    rsh -l user 172.30.7.157 "echo test"
    echo $VAL
done

当我执行 printf" 12 \ n34 \ nx |时test1.sh ,结果是:

12
34
x

当我执行 printf" 12 \ n34 \ nx |时test2.sh ,结果是:

12
teste

teste

teste

.
.
.

这让我觉得使用远程连接会清除CIOBUF。

有没有办法避免这个问题?

1 个答案:

答案 0 :(得分:1)

这不是缓冲问题; rsh正在消耗read的输入。从/dev/null重定向其标准输入。 (另外,您可以测试read的退出状态,而不是将VAL与哨兵值进行比较。

while IFS= read -r val; do
do
    rsh -l user 172.30.7.157 "echo test" < /dev/null
    echo "$val"
done