터미널 쉘에 다음과 같은 라이너가 있습니다.
while true; do echo foo | nc -l 3000 done;
포트 3000에서 계속 수신 대기하고 싶습니다. 하지만 구문론적으로 bash가 작동하려면 개행 문자가 필요한 것 같나요?
while true; do
echo foo | nc -l 3000
done;
한 줄로 할 수 있는 방법이 있나요? 여기서 무슨 일이 일어나고 있는 걸까요?
답변1
bash
명령 구문을 이해하려면 셸(예: ) 매뉴얼 페이지를 읽어보세요 ! 이 "문제"는 netcat
.
루프의 일반적인 구문 while
은 다음과 같습니다.
while sleep 1
do
echo "I want to read 'man bash'"
done
하지만 로 쓸 수 있습니다 while sleep 1; do echo "I want to read 'man bash'"; done
.
아니면 설명서에 나와 있듯이:while list-1; do list-2; done
답변2
대답은 세미콜론입니다.
while true; do echo foo | nc -l 3000; done;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~