소스를 사용하여 다른 파일 내에서 다른 파일을 실행하는 방법에 대해 읽었습니다.
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
이를 구성하는 것입니다.