2017-09-22 20 views
1
(insert "[" (shell-command-to-string "~/lombardi/http_fetch.sh") "]") 

どのように引数をhttp_fetch.sh関数に渡すことができますか?この引数は評価することによって到達しました(elfeed-entry-link entry)lisp文内の文字列補間

私は 'を前に使ってみましたが、bashエラーで終わりました。シェルコマンドの最後にelfeed-entry-linkを呼び出してから、結果の文字列を追加する

答えて

1

使用concatelfeed-entry-linkの結果はシェルのメタ文字や空白が含まれている場合に

(insert "[" 
     (shell-command-to-string 
     (concat "~/lombardi/http_fetch.sh " (shell-quote-argument (elfeed-entry-link entry)))) 
     "]") 

shell-quote-argumentは、コマンドを保護します。 (編集:削除マニュアルは引用もともとここに提案して、代わりに@philsからのコメントのおかげでshell-quote-argumentを使用していました。)

も注意shell-command-to-stringの結果は、最も可能性が高い最後の改行が含まれていることを、あなたドンので、もしstrip it outに確認してくださいそれが欲しい。

+0

引数を手動で引用しないでください。生成されたシェルコマンドの各引数に 'shell-quote-argument'を呼び出します。 (あなたが必要と思われるかどうかに関わらず、これを行うのが一般的には良い練習です) – phils

+0

ありがとう!私はあなたの助言を含める答えを編集しました。 –

0

formatを使用して文字列を補間できます。スティーブが言及したよう

(insert "[" 
     (shell-command-to-string 
     (format "~/lombardi/http_fetch.sh %s" (elfeed-entry-link entry))) 
     "]") 

、あなたは本当にあなたが引数を渡すときに、正しくスペースや引用符を扱う確保するためにshell-quote-argumentを使用する必要があります。