鍍金池/ 問(wèn)答/PHP/ php在命令行下的輸出被sh處理的問(wèn)題

php在命令行下的輸出被sh處理的問(wèn)題

用php寫(xiě)了一個(gè)cli的小程序,寫(xiě)的挺好,突發(fā)奇想準(zhǔn)備給他做個(gè)啟動(dòng)畫(huà)面(字符畫(huà)),但是遇到了輸出的字符畫(huà)被sh所處理的的問(wèn)題!!!!
如下圖
圖片描述

在09.40.06輸出的字符串就不會(huì)被sh 所處理了!!!很神奇!為什么?

代碼截圖如下
圖片描述
圖片描述
圖片描述

回答
編輯回答
安若晴

多看文檔
`是命令執(zhí)行符

2017年10月26日 23:49
編輯回答
淚染裳

這是 $logo 變量使用 `` 符號(hào)賦值多行字符串引起的. 在 bash 中, 被 `` 符號(hào)包起來(lái)的語(yǔ)句會(huì)被當(dāng)做命令來(lái)執(zhí)行. 而你最終是會(huì)輸出到 shell 的, 當(dāng)然得遵循這條規(guī)則.
解決辦法有三:

  1. 不使用 `` 的方式給 $logo 變量賦值. 當(dāng)然這樣太麻煩了...
  2. 把打印用的語(yǔ)句由 echo 改為 print.
  3. 在 $logo 變量賦值時(shí), 首尾添加內(nèi)容, 使之成為可用的 bash 命令. 如下:
<?php
$logo = `
cat << EOF
1111
22222
33333333
EOF
`;
2017年7月2日 08:36