텍스트 파일 라인을 기반으로 쉼표로 구분된 명령줄 매개변수 지정

텍스트 파일 라인을 기반으로 쉼표로 구분된 명령줄 매개변수 지정

다음과 같은 명령을 실행하고 싶습니다.

command argument --parameter=param1,param2,param3

여기서 param1, param2, param3은 params.txt 파일에서 각각 한 줄에 있는 매개변수 수에 제한이 없을 수 있습니다.

다음을 사용하여 올바른 매개변수 목록을 만들 수 있습니다.

echo $(cat common.modules) | tr " " ","

하지만 노력하고

command argument --parameter=$(cat params.txt) | tr " " ","

그리고 그 명백한 변형은 실패합니다. 아마도 다음과 같은 것을 작동시킬 수 없기 때문일 것입니다.

echo $($(cat params.txt) | tr " " ",")

도움을 주시면 감사하겠습니다.

답변1

질문에서 이 명령을 살펴보겠습니다.

command argument --parameter=$(cat params.txt) | tr " " ","

그러면 명령이 실행 command argument --parameter=$(cat params.txt)되고 출력이 tr " " ",". 그것은 당신에게 필요한 것이 아닙니다.

노력하다:

command argument --parameter="$(echo $(cat params.txt) | tr " " "," )"

여기서는 echo $(cat params.txt)의 내용에 대해 단어 분할이 수행됩니다 params.txt. 이로 인해 모든 매개변수가 공백으로 구분됩니다. 그런 다음 tr " " ","공백을 쉼표로 바꿉니다.

cat위의 내용 을 사용하면 POSIX 호환성이 유지됩니다. 예를 들어, 이 명령은 /bin/shUbuntu, Debian 및 유사한 시스템의 기본 셸에서 작동합니다 .

답변2

는 어때

command argument --parameter=$(tr '\n' ',' < params.txt)

관련 정보