파일 내용을 명령줄 인수로 전달하는 방법

파일 내용을 명령줄 인수로 전달하는 방법

파일 경로를 파일에 저장하고 전달해야 합니다.콘텐츠이 파일은 다음과 같이 쉘 스크립트, 특히 Maven에 대한 인수로 사용됩니다.

mvn -Dvar_name=(contents of file)

이것이 작동합니까?

mvn -Dvar_name=(cat /path/to/file)

?

답변1

이는 다음과 같이 명령 대체를 사용하여 수행할 수 있습니다.

mvn -Dvar_name="$(cat /path/to/file)" # POSIX
mvn -Dvar_name="$(</path/to/file)"    # bash

그러나 여기에는 주목할 만한 주의 사항이 있습니다. 모든 후행 개행 문자는 제거됩니다. 그래도 문제가 되지 않는다면 이 방법은 효과가 있을 것입니다.

실제로 한 줄만 읽으려면 read다음과 같이 를 사용할 수 있습니다.

IFS= read -r line < /path/to/file
mvn -Dvar_name="$line"

답변2

$()명령 대체를 위해서는 `` 또는 백틱을 사용해야 합니다 .

인용 대체도 중요합니다. 그렇지 않으면 파일에 여러 단어가 포함되어 있으면 여러 인수로 확장됩니다. 여기 몇 가지 예가 있어요.

mvn -Dvar_name="$(< /path/to/file)" # bash

mvn -Dvar_name="$(cat /path/to/file)" # POSIX

관련 정보