(insert "[" (shell-command-to-string "~/lombardi/http_fetch.sh") "]")
어떻게 http_fetch.sh 함수에 인수를 전달할 수 있습니까? 이 인수는 다음을 통해 평가되었습니다. (elfeed-entry-link entry)
lisp 구문 내에서 문자열 보간
'앞에 사용했지만 bash 오류가 발생했습니다.
(insert "[" (shell-command-to-string "~/lombardi/http_fetch.sh") "]")
어떻게 http_fetch.sh 함수에 인수를 전달할 수 있습니까? 이 인수는 다음을 통해 평가되었습니다. (elfeed-entry-link entry)
lisp 구문 내에서 문자열 보간
'앞에 사용했지만 bash 오류가 발생했습니다.
사용 concat
는 쉘 명령의 끝에 elfeed-entry-link
를 호출 결과 문자열을 추가합니다 :
shell-quote-argument
(insert "["
(shell-command-to-string
(concat "~/lombardi/http_fetch.sh " (shell-quote-argument (elfeed-entry-link entry))))
"]")
는 elfeed-entry-link
의 결과가 쉘 메타 문자 또는 공백이 포함되어 경우에 명령을 보호합니다. (편집 :. 제거 된 매뉴얼은 @phils에서 주석으로, 원래는 여기에 제안 대신 shell-quote-argument
을 사용하여 감사의 말을 인용)
참고도 shell-command-to-string
의 결과가 가장 가능성이 마지막 개행 문자를 포함 할 것이다, 그래서 strip it out해야합니다 만약 당신이 돈 그걸 원해.
format
을 사용하여 문자열을 보간 할 수 있습니다. 스티브 언급으로
(insert "["
(shell-command-to-string
(format "~/lombardi/http_fetch.sh %s" (elfeed-entry-link entry)))
"]")
, 당신은 정말 당신이 인수를 전달할 때 제대로 공간과 따옴표를 처리 할 수 있도록 shell-quote-argument
를 사용해야합니다.
인수를 수동으로 인용하지 마십시오. 생성 된 쉘 명령의 각 인수에 대해'shell-quote-argument'를 호출하십시오. (당신이 필요하다고 생각하든 그렇지 않든간에 일반적으로 이것을하는 것이 좋습니다.) – phils
고마워요! 귀하의 조언을 포함하도록 답변을 편집했습니다. –