홈>
다음과 같은 bash 스크립트가 있습니다.
cat filename | while read line
do
read input;
echo $input;
done
그러나 while 루프에서 읽을 때 가능한 I/O 리디렉션으로 인해 파일 파일 이름에서 읽으려고 할 때 올바른 출력을 얻지 못합니다.
다른 방법으로도 같은 일을합니까?
-
답변 # 1
-
답변 # 2
유지 3을 통해 일반 stdin을 리디렉션하여 유지할 수 있습니다 파이프 라인 내부로 가져 오기 :
{ cat notify-finished | while read line; do read -u 3 input echo "$input" done; } 3<&0
cat
를 사용하는 경우BTW 이렇게하면 리디렉션으로 바꾸면 훨씬 쉬워집니다.
while read line; do read -u 3 input echo "$input" done 3<&0 <notify-finished
또는 해당 버전에서 stdin과 unit 3을 교체 할 수 있습니다. 파일을 unit 3으로 읽고 stdin을 그대로 두십시오.
while read line <&3; do # read & use stdin normally inside the loop read input echo "$input" done 3<notify-finished
-
답변 # 3
루프를 다음과 같이 변경하십시오 :
for line in $(cat filename); do read input echo $input; done
단위 테스트 :
for line in $(cat /etc/passwd); do read input echo $input; echo "[$line]" done
-
답변 # 4
두 번 읽는 것처럼 보이지만 while 루프 내부의 읽기는 필요하지 않습니다. 또한 cat 명령을 호출 할 필요가 없습니다 :
while read input do echo $input done < filename
-
답변 # 5
echo "Enter the Programs you want to run:" > ${PROGRAM_LIST} while read PROGRAM_ENTRY do if [ ! -s ${PROGRAM_ENTRY} ] then echo ${PROGRAM_ENTRY} >> ${PROGRAM_LIST} else break fi done
관련 자료
- bash - 읽기 루프가 별칭 내에서 작동하지 않는 동안
- java - 루프의 다른 상호 작용에 사용하기 위해 사용자 입력에서 생성 된 값을 루프 내부에 저장
- javascript - While 루프 입력 문제
- Nested function inside While loop - while 루프 내부의 중첩 함수 - php
- javascript - 비동기 함수 내부의 while 루프는 조건이 거짓 일 때 한 번 더 실행됩니다
- C #에서 사용자 입력에 null int 값이있는 while 루프를 올바르게 사용하는 방법
- c++ - for 루프 내에서 벡터의 요소에만 액세스 할 수 있습니다
- python - while 내에서 한 번만 인쇄
- python - for 루프가 다른 for 루프 내에서 실행되는 동안 다른 목록에 목록을 추가하는 방법
- javascript - onkeyup을 사용하여 레이블 내부에 사용자 입력 값을 표시하는 방법
- javascript - 반응 형 데이터 테이블 내부의 업데이트 입력 값이 작동하지 않음
- reactjs - create-react-app - npm err! '…'근처에서 구문 분석하는 동안 예기치 않은 json 입력의 끝
- Spring Boot Security Authentication 내에서 JPA에 액세스하는 동안 오류가 발생했습니다
- unity - Update 내부에서 while 루프가 없거나 대신 코 루틴을 사용하지 않도록 스크립트를 어떻게 변경할 수 있습니까?
- c++ - while 루프를 종료 한 후 마지막 입력이 작동하지 않음
- c - 사용자가 너무 긴 입력을 입력 한 후에도이 while 루프가 반복되는 이유는 무엇입니까?
- jquery - 각 테이블 행 내부의 각 입력을 반복
- 사용하는 동안 함수 내부에서 변수를 호출하는 방법은 PHP에서 해당 함수 외부에 필요 또는 포함
- javascript - React의 while 루프 내부에서 State를 어떻게 업데이트합니까?
- 항상 내부에 메서드를 사용하여 While 루프 입력
제어 터미널 장치에서 읽습니다 :
추가 정보 : http://compgroups.net/comp.unix.shell/Fixing-stdin-inside-a-redirected-loop