Command-Line
內聯 heredoc 而不是文件
我有一個命令(php 文件),它以文件的位置為參數。
例如。
$ php ./ScriptName.php /my/file/location.txt
有時我只需要一兩個詞,所以我真的不想創建 location.txt 文件,這樣我就可以用下一個命令引用它——我寧願以某種方式用命令傳遞它。例如,考慮
location.txt
上面範例中的內容只是:
mywords
有沒有辦法可以重寫原始命令行參數以僅提供“虛擬”文件的內容?
您可以使用該
/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
如果你有一個允許程序替換的 shell,例如 zsh、bash 或 ksh,你可以這樣做
php ScriptName.php <(echo mywords)
shell 將設置一些方法來在不同的 shell 中執行 echo 命令,並以命名 fifo 或更常見的方式通過管道和 /dev/fd/XX 形式的文件名提供輸出。