내가 사용자 입력을 얻기 위해 while 루프 내부에 읽기 명령을 실행하려고 작동하지 않는 동안 아래와 같이 내부 -u 3 읽기 :배쉬 -
for dir in ./*; do
for subdir in $dir/*; do
someprocess |
sort_processed_pipedout |
tail_sortedout |
while read line; do
another_process on $line
read -t 1 -n 10000 discard
read -u 3 -p "Save as final? (y/n)" USER_INPUT
if [ "$USER_INPUT" = y ]; then
something_else
echo "success"
fi
done 3<&0
done
done
이것은 내가 뭐하는 거지 무슨 생각을 :
를첫 번째 읽기는 부주의 한 입력을 무시하고 두 번째 읽기는 'here'과 같이 '파일 핸들'을 0에서 3으로 전환하고 나머지는 평소와 같이 진행됩니다.
다음과 같은 현상이 발생합니다. USER_INPUT은 꼬리 출력에서 직접 온 것 같습니다.
왜 이것이 실패합니까?
편집 : 동일한 하위 셸로 출력하려면 어떻게해야합니까?
당신이 배관다시피, 프로세스는 서로 다른 서브 쉘에 속한다. – fedorqui