다음과 같은 스크립트에서 파일을 처리하려고 할 때 각 줄의 첫 번째 문자에 별표가 포함된 텍스트 파일이 있습니다.
while read line; do
out=$(echo $line | awk '{ print $3 }')
echo $out
done < file_with_asterisks
내가 원하는 세 번째 열 대신 현재 작업 디렉터리의 파일을 인쇄하고 있습니다.
별표를 제거하면 문제가 해결되었으므로 그것이 globbing이라는 것을 알았습니다.
bash가 별표를 와일드카드 대신 텍스트로 처리하도록 만드는 방법은 무엇입니까?
답변1
변수 주위에 따옴표를 넣어야 합니다.
while IFS= read -r line; do
out=$(echo "$line" | awk '{ print $3 }')
echo "$out"
done < file_with_asterisks
귀하의 경우 확장 echo $line
(각 줄의 초기 별표 뒤에 공백이 있다고 가정합니다)