라는 파일이 있고 dependencies
그 내용은 다음과 같습니다.
blog
forms
geo
ticketing
build.sh
루프를 반복해야 하는 스크립트가 있습니다 . 이 빌드 스크립트는 Docker 컨테이너 내에서 실행됩니다. 저는 이 파일의 줄을 반복하는 여러 가지 방법을 테스트했습니다.
#!/bin/bash
while IFS= read -r dep || [ -n "$dep" ]
do
echo $dep # empty
done < /path_to_dependencies
또는
$( cat /path_to_dependencies ) |
while read dep;
do
echo $dep # empty
done
또는
for dep in `cat /path_to_dependencies`
do
echo $dep # empty
done
또는
while read dep;
do
echo $dep # empty
done <<< "$( cat /path_to_dependencies )"
이 문제의 원인은 무엇입니까? 내 우분투에서 문제 없이 파일 내용을 반복할 수 있습니다.
답변1
첫 번째 코드 예제가 저에게 효과적이었습니다. 내가 코드를 갖고 있을 때~해야 한다작동하지만 작동하지 않습니다. 가장 간단한 형식으로 시작했습니다.
while read dep
do
echo "$dep"
done < ./dependencies
( dependencies
편의를 위해 파일은 동일한 디렉토리에서 시작됩니다.) 귀하의 예가 나올 때까지
추가 항목을 추가했습니다 .read
while IFS= read -r dep || [ -n "$dep" ]
do
echo "$dep"
done < ./dependencies
단순화된 버전과 이 버전 모두 다음과 같은 결과를 제공합니다.
blog
forms
geo
ticketing
그래서 코드를 가장 간단한 형태로 줄이고, 작동이 멈추는 부분에 도달한 다음 집중할 수 있을 때까지 추가 부분을 한 번에 입력하는 것이 좋습니다.