2013-03-30 70 views
0

我需要使用phpseclib庫使用PHP創建bash文件。 這是我現在使用的代碼:使用PHP和phpseclib創建帶有變量的bash文件

$ssh->exec("cat > $sPath$sSavingCode <<EOF 
screen -dmS $1 java -Xincgc -Xmx200M -jar craftbukkit-1.4.7.jar nogui 
     "); 

代碼工作,以及文件保存,但它跳過了「$ 1」。相反,它使-dmS和java之間有兩個空格的文件。

我怎樣才能讓$ 1被寫入bash文件?

感謝

編輯

這是整個功能:

{ 
     $sPath = "minecraft/servers/".$user."/"; 
     $sSavingCode = "start.sh"; 
     $ssh->exec("cat > $sPath$sSavingCode <<EOF 
screen -dmS $1 java -Xincgc -Xmx200M -jar craftbukkit-1.4.7.jar nogui 
     "); 
    } 

$ SPATH和$ sSavingCode是PHP變量和$ 1是bash的變量,必須在腳本。

+1

你試過轉義變量嗎? '\ $ 1' – fedorqui

+0

是的,我試圖做到這一點,但它仍然留下2個空格 – Runner

+0

我試過轉義,使$ 1轉變爲像$ foo ='$ 1'這樣的變量,以及我嘗試或試圖找到的所有東西沒有工作。 – Runner

回答

3

爲什麼不把命令分配給一個簡單的變量?

$command = ' screen -dmS \$1 java -Xincgc -Xmx200M -jar craftbukkit-1.4.7.jar nogui' 

    $ssh->exec("cat > $sPath$sSavingCode <<EOF 
$command 
     "); 
+0

單引號不起作用,它甚至不會生成文件 – Runner

+0

我假設$ sPath和$ sSavingCode是在您的PHP腳本中聲明的,不是嗎?此外,$ 1實際上應該是一個shell變量? 請問您可以嘗試添加到我原來的答案片段嗎? –

+0

該代碼無效,它創建文件,但不打印任何文本 – Runner