2017-03-21 70 views
1

對不起,今天在這裏這個愚蠢的問題。PHP陣列Bash不工作

我使用implode();將PHP數組傳遞給bash腳本。

爲了測試,我回應了這個implode,我可以看到所有的數組項,但是當我只有數組的第一個元素被打印時printf '%s\n' "${files[@]}"

我錯過了什麼嗎?

下面是詳細信息:

PHP:

$files = $_POST['files'];  
$files2 = implode(" ", $files); 
echo $files2 ## I can see full output here. 
shell_exec ("./sequential.sh $files2"); 

擊:

files = $1 
printf '%s\n' "${files[@]}" >> mytempfile.txt 

感謝您的任何指導。

+0

$ files2應該是字符串,而不是一個數組 – georoot

回答

1

文件= $ 1

$1僅僅是第一個參數。如果你想所有的參數,那麼你可以在[email protected]找到他們:

printf '%s\n' "[email protected]" >> mytempfile.txt 
+0

好吧,我測試了一下,並得到相當接近。它確實打印了完整的內容。我想我應該在我的帖子中包括這個,但我編輯了很多腳本。我將4個其他變量從PHP傳遞到bash,所以如果使用'$ @',它會打印所有變量,但我只需要數組中的whats。所以現在要弄清楚。 – fcamp

+0

'$ @'包含在命令行中傳遞給shell腳本的所有參數。 – axiac

+0

我標記了你的正確性,因爲它對我提出的問題是正確的,但我想我需要進一步弄清楚它是否能正確處理所有參數。謝謝你的幫助。 – fcamp