ファイルの代わりにインライン区切り記号

ファイルの代わりにインライン区切り記号

ファイルの場所をパラメータとして使用するコマンド(phpファイル)があります。

例えば。

$ php ./ScriptName.php /my/file/location.txt

時には1つか2つの単語しか必要ないので、次のコマンドで参照できるようにlocation.txtファイルを作成したくありません。むしろ、そのコマンドを使用して何らかの方法でパイプすることをお勧めします。たとえば、上記のlocation.txt例の内容を考えてみましょう。

mywords

「ダミー」ファイルの内容のみを提供するように元のコマンドラインパラメータを再構築する方法はありますか?

答え1

バリアントを使用できます/dev/fd/0いたずらファイル名が必要なスクリプトに文字列を渡します。

php ./ScriptName.php php://fd/0 <<<'mywords'

たとえば、script.phpには次のものがあります。

<?php
   $handle=fopen($argv[1],"r");
   echo "Read: ".fgets($handle);
   fclose($handle);
?>

ランニング:

php script.php php://fd/0 <<<'Some text'

出力:

Read: Some text

答え2

zsh、bash、kshなどのプロセス置換を許可するシェルがある場合は、次のことができます。

php ScriptName.php <(echo mywords)

シェルは他のシェルでechoコマンドを実行し、出力を名前付きfifoとして提供するか、より一般的にパイプと/dev/fd/XX形式のファイル名を介して提供する方法を設定します。

関連情報