Next: , Previous: Subprocess Creation, Up: Processes


36.2 シェル引数

Lispプログラムから、 ユーザーが指定したファイル名を含んだコマンドを指定して シェルを実行する必要がときどきあります。 これらのプログラムでは、任意の正しいファイル名を扱える必要があります。 しかし、シェルは、特定の文字がファイル名として現れると特別に扱うので、 そのような文字がシェルに混乱をもたらします。 そのような文字を扱うには、関数shell-quote-argumentを使います。

— Function: shell-quote-argument argument

この関数は、argumentを実際の内容とする シェル構文で表した引数を文字列で返す。 この戻り値をシェルコマンドに連結し、 実行のためにシェルに渡しても問題を生じないはずである。

この関数が行うことの詳細は読者のオペレーティングシステムに依存する。 この関数は通常のシェル構文に合うように設計してある。 非標準のシェルを使う場合には、この関数を再定義する必要があろう。 MS-DOSでは、この関数はargumentを無変更で返す。 MS-DOSのシェルにはクォートの機能がないため、 これは本当は正しいことではないが最良のことである。

          
          ;; つぎの例はGNUとUNIXシステムのふるまいである
          (shell-quote-argument "foo > bar")
               ⇒ "foo\\ \\>\\ bar"

シェルコマンドを作るshell-quote-argumentの使用例をつぎに示す。

          (concat "diff -c "
                  (shell-quote-argument oldfile)
                  " "
                  (shell-quote-argument newfile))