다음과 같은 명령을 실행하고 싶습니다.
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/sh
Ubuntu, Debian 및 유사한 시스템의 기본 셸에서 실행된다는 것을 의미합니다.
답변2
무엇에 대해
command argument --parameter=$(tr '\n' ',' < params.txt)