인수/매개변수를 파일로 사용하여 bash 스크립트를 실행하고 있습니다. 스크립트 내부에서 이러한 파일의 내용을 어떻게 얻을 수 있습니까?
다음 명령줄을 사용하여 스크립트를 실행합니다.
sh script_name animal.txt stars.txt
animal.txt
"기린"이 포함되어 있습니다.
스크립트에서 (기린)의 내용을 어떻게 얻나요 animal.txt
? 나는 bash 스크립팅을 처음 접했기 때문에 도움을 주시면 대단히 감사하겠습니다.
답변1
for f do exec <"$f"
: handle stdin
done
비대화형 쉘은 읽을 수 없거나 특수 내장 함수와 연관되어 있을 때 존재하지 않는 파일로부터의 모든 리디렉션을 치명적인 오류로 처리하고 즉시 종료되며 의미 있는 진단 메시지를 stderr에 기록합니다. 따라서 인수가 유효하고 읽을 수 있는 파일이고 : ...
해당 부분을 유용한 것으로 바꾸거나 사용자가 잘못된 인수를 제공하고 스크립트가 의미 있게 종료되지 않는 한 위 명령문은 아무 소용이 없습니다 .
이렇게 하면...
for var in ...; do : compound command list on "$var"; done
이 in ...;
비트는 기본 세트(즉, 매개변수 목록)를 매개변수 세트로 대체할 수 있는 구문의 선택적 명령문입니다.
그래서...
for var do : compound command list on "$var"; done
...당신이 찾고 있는 것이 여기 있을 수도 있습니다.
for f do exec <"$f"
: now do some stuff w/ stdin
done
...여기서 쉘은 스크립트에 제공된 모든 인수를 stdin에 반복적으로 할당하고 읽기 가능한 파일로 확인하여 exec
모든 인수가 소진되고 for
루프가 끝날 때까지 명령문 다음의 모든 명령을 사용할 수 있도록 합니다 done
. 이를 수행할 수 없는 경우 사용자에게 익숙한 표준 형식으로 오류 메시지의 형식을 지정하고 인쇄합니다.
답변2
first_file="$1"
test -f "$first_file" || exit 2
file_content="$(<"$first_file")"
echo "$file_content"
답변3
할 수 있어요:
#!/bin/bash
while read line ;
echo "$line"
#######
#######
########
done < "$1"
설명: 각 $line은 파일의 전체 줄 내용입니다.
usage : ./script.sh file.txt