다음 스크립트 코드가 있습니다.
테스트 파일
echo "BEGIN"
while read CMD <&1; do
[ -z "$CMD" ] && continue
case "$CMD" in
start)
echo "get_start"
;;
stop)
echo "get_stop"
;;
*)
echo "get_uknown_command"
;;
esac
echo "END";
done
내가 그것을 실행할 때 :
$./test.sh <input.txt
내 스크립트가 잠겨 있습니다.
입력.txt
start
stop
sthh
내 스크립트가 왜 잠겨 있나요? 이 문제를 어떻게 해결할 수 있나요?
참고: 데이터를 수동으로 입력하면 스크립트가 잠기지 않습니다.
답변1
어쨌든 두 번째 줄은 부정확하고 지나치게 복잡합니다. 이것파일 설명자, stdin
, stdout
는 stderr
각각 0
, 1
, 이므로 원하는 내용을 2
읽으려면stdin
while read CMD <&0; do
그러나 stdin
의 기본 입력은 이므로 read
,
while read CMD; do
이것이 실제로 가장 쉬운 방법입니다. 이 방법으로 명령을 수동으로 입력하거나 명령줄에서 리디렉션을 사용하여 파일을 읽을 수 있습니다.