Я новичок в PHP … Обычно я пишу на bash, где я могу легко сделать что-то вроде этого:
#!/bin/bash
# myscript.sh
function testFunction() {
echo "bubu" > /dev/tty
echo "gaga"}
a=$(testFunction)
echo $a > t
Если я запускаю его в оболочке, я получаю это:
$ ./myscript.sh
bubu
$ cat t
gaga
Теперь, как я могу получить тот же вывод, если у меня есть файл PHP вместо функции?
// my script.php
echo "bubu";
echo "gaga";
Bash скрипт:
#!/bin/bash
# myscript.sh
a=$(php myscript.php)
echo $a > t
Если я запускаю его в оболочке, я получаю это:
$ ./myscript.sh
$ cat t
bubu
gaga
Как я могу сказать php скрипт для отправки "bubu"
в /dev/tty
?
Я пытался поиграть с ob_start
и его друзья, но не получили никакого результата.
Вы можете использовать stdout / stderr в PHP, чтобы разделить вывод, смотрите вопрос stackoverflow PHP CLI не использует stderr для вывода ошибок. Это, однако, потребует адаптации всех «бубу» echo
заявления в myscript.php
что-то вроде:
fwrite(STDERR, "bubu");
Вы бы тогда перенаправили STDERR подать bubu
в оболочке Bash, чтобы получить все строки «bubu», в то время как все строки «gaga» появятся на вашем терминале:
php myscript.php 2> bubu
$ php script.php > /dev/tty
Это делает трюк 🙂
редактировать/
Я вижу, вы хотите только «Bubu»
Итак, вы должны сделать следующее:
file_put_contents('/dev/tty', 'bubu');