为什么下面的代码总是输出“0”?
#!/bin/bash RETVAL=0 echo -e '1\n2' | while read number; do RETVAL=1 done echo $RETVAL
while循环是pipe道的一部分,因此运行在一个子shell中。 在子shell中设置的variables( RETVAL=1 )不影响父shell( echo $RETVAL )。
它与回声是如何不通过EOF / Ctrl D到读取。
如果你拉出回声,并inputCtrl D到while循环,它将按预期工作。
不知道如何通过回声发送Ctrl D.