Next: Synchronous Processes, Previous: Subprocess Creation, Up: Processes
Lispプログラムから、
ユーザーが指定したファイル名を含んだコマンドを指定して
シェルを実行する必要がときどきあります。
これらのプログラムでは、任意の正しいファイル名を扱える必要があります。
しかし、シェルは、特定の文字がファイル名として現れると特別に扱うので、
そのような文字がシェルに混乱をもたらします。
そのような文字を扱うには、関数shell-quote-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))