스크립트 파일에서 입력을 받아야 합니다.
$ ./script < input.txt
내 스크립트는 무한 while 루프를 실행하며 를 눌러야만 종료할 수 있습니다 ctrl-d
. ctrl-d
script.sh가 발견되면 자동으로 종료되도록 input.txt에 어떻게 추가합니까 ?
while true;
do
echo 'blah blah'
read i # takes from file
case $i in
a )
echo 'blah blah'
read j #takes from file
.......
*) echo 'invalid option'
continue
;;
esac
done
이 루프는 사용자가 ctrl-D를 누르거나 input.txt의 끝에 도달할 때까지 계속되어야 합니다.
답변1
read
상황에 따라 다음을 사용하십시오 while
.
while read -r a; do
echo 'blah blah'
case "$a" in
a)
echo 'blah blah'
read -r b
echo "line: $b"
;;
*)
echo 'invalid option'
continue
;;
esac
done
파일 끝에 도달하면 루프가 종료됩니다.
답변2
스크립트가 먼저 무엇을 하는지 살펴보는 것이 좋을 것입니다. 이와 같은 파일을 읽을 때 다음을 사용하여 파일의 내용을 읽을 수 있습니다.하지만반지:
while read p; do
echo $p
done <&0
이 루프는 파일의 한 줄을 변수에 할당합니다.피즉시. 루프 끝에 있는 리디렉션 연산자에 유의하세요. 이는 표준 입력을 리디렉션합니다.