명령에 대해 파일에 저장된 여러 입력 매개변수를 지정하는 방법은 무엇입니까?

명령에 대해 파일에 저장된 여러 입력 매개변수를 지정하는 방법은 무엇입니까?

다음을 통해 여러 웹 페이지를 PDF 파일로 변환하고 싶습니다.

wkhtmltopdf http://think-like-a-git.net/sections/about-this-site.html http://think-like-a-git.net/sections/about-this-site/who-this-site-is-for.html all.pdf

두 개의 입력 매개변수를 "links"라는 텍스트 파일에 넣으면:

http://think-like-a-git.net/sections/about-this-site.html 
http://think-like-a-git.net/sections/about-this-site/who-this-site-is-for.html

파일을 기반으로 입력 매개변수를 어떻게 지정합니까? 다음은 작동하지 않습니다:

$ wkhtmltopdf "$(cat links)" all.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
Exit with code 1 due to network error: ContentNotFoundError

답변1

에서 큰따옴표를 사용하면 "$(cat links)"쉘은 파일의 전체 내용을 별도의 필드(각 필드는 파일의 한 줄)가 아닌 하나의 문자열로 처리합니다.

다음을 수행할 수 있습니다.

set -f  # Turn off globbing
IFS='   # Split on newline only
'
wkhtmltopdf $(cat links) all.pdf

답변2

당신은 할 수 있습니다:

readarray -t a < file
wkhtmltopdf "${a[@]}" all.pdf

  • readarrayfile후행 줄 바꿈을 제거하여 한 줄씩 배열로 읽습니다 -t.
  • "${a[@]}"모든 배열 요소에 대한 참조입니다. 그러면 다음 형식의 명령이 생성됩니다.
wkhtmltopdf "${a[0]}" "${a[1]}" "${a[2]}" "..." all.pdf

관련 정보