소스 파일을 매개변수로 사용하시겠습니까?

소스 파일을 매개변수로 사용하시겠습니까?

소스를 사용하여 다른 파일 내에서 다른 파일을 실행하는 방법에 대해 읽었습니다.

source ./filename

하지만 명령의 매개변수로 이 작업을 수행하고 싶습니다.. (또는 집합)

명령은 다음과 같이 실행됩니다.

command \
-argument \
-argument \
source ./file
-argument \
...

이 파일에는 기본적으로 다음과 같은 추가 매개변수 세트가 포함되어 있습니다.

-argument \
-argument \

어떻게 해야 하나요? 그대로 실행하면 명령이 실패하게 됩니다.

답변1

기본적으로 콘텐츠가 filename매개변수로 필요합니다. 매개변수에 공백이나 와일드카드 연산자가 없으면 이 작업을 쉽게 수행할 수 있습니다.

command \
-argument \
-argument \
$(cat ./file) \
-argument \
...

매개변수에 줄 바꿈이나 다른 문자가 포함되어 있지 않으면 해당 문자를 구분 기호로 사용하고 매개변수 목록을 구성할 수 있습니다.

#! /bin/bash
args=()
while IFS= read -r arg
do
    args+=("$arg")
done < filename
command \
-argument \
-argument \
"${args[@]}" \
-argument \
...

매개변수가 포함되지 않은 경우 |다음을 수행할 수 있습니다.

while IFS= read -d'|' -r arg

파일에는 다음이 포함됩니다.

-arg1 something|-arg2
something else|-arg3 ...

답변2

command \
-argument \
-argument \
$(cat ./file) \
-argument \
...

할 것이다

-argument 
-argument 

또는

-argument -argument

처럼 ./file. 큰따옴표 없이 그대로 사용하면 쉘이 이를 분할합니다 $IFS(기본값은 탭, 개행, 공백).$(cat ./file)

슬래시를 제거할 필요가 없는 또 다른 옵션은 문자열을 구성한 다음 eval이를 구성하는 것입니다.

관련 정보