이 bash 스크립트가 있습니다.
for opt in string1 string2 string3 ... string99
do somestuff
작동하지만 명시적인 문자열 목록을 실제로 다음과 같은 모든 문자열이 포함된 파일로 바꾸고 싶습니다.
strings=loadFromFile
for opt in $strings
do somestuff
어떻게 해야 합니까?
답변1
while read VAR
각 입력 줄을 처리하므로 아마도 여기가 가장 좋을 것입니다. 다음과 같은 파일에서 리디렉션할 수 있습니다.
while IFS= read -r THELINE; do
echo "..$THELINE"
done </path/to/file
이렇게 하면 ".."이 앞에 붙은 각 줄이 표시됩니다.
귀하의 사례의 경우 :
while IFS= read -r opt; do
#somestuff $opt
done </path/to/file
바라보다"IFS=;" 대신 "IFS= 읽기"가 자주 사용되는 이유는 무엇입니까?설명을 위해.
답변2
while IFS= read -r opt
do
some_stuff
done < file_with_string
바라보다"IFS=;" 대신 "IFS= 읽기"가 자주 사용되는 이유는 무엇입니까?설명을 위해.
답변3
이것이 while IFS= read -r line; do ...; done < aFile
최선의 대답이다
문자열에아니요또는 공백을 포함하면 \[*?
할 수 있습니다
for word in $(< aFile); do something; done
$(< file)
파일을 읽는 bash의 기능입니다( 와 유사 cat
하지만 새 프로세스를 생성하지 않음).
답변4
나의 충고:
cat INPUTFILE| {
declare -a LINES
mapfile -t LINES
for line in "${LINES[@]}"
do
somestuff
done
}