Bash 스크립트를 실행할 때 매개변수로 사용되는 파일의 내용에 어떻게 액세스합니까?

Bash 스크립트를 실행할 때 매개변수로 사용되는 파일의 내용에 어떻게 액세스합니까?

인수/매개변수를 파일로 사용하여 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

관련 정보