2017-03-21 1 views
1

Sorry für die dumme Frage hier heute.PHP-Array zu Bash funktioniert nicht

Ich übergebe ein PHP-Array zu einem Bash-Skript mit implode();.

Zum testen echo ich die implode und ich kann alle Array-Elemente dort sehen, aber wenn ich printf '%s\n' "${files[@]}" nur das erste Element des Arrays gedruckt wird.

Fehle ich etwas?

ist hier weitere Informationen:

PHP:

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

Bash:

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

Vielen Dank für jede Beratung.

+0

files2 $ string sein sollte und nicht ein Array – georoot

Antwort

1

files = ist $ 1

$1 nur das erste Argument. Wenn Sie alle Argumente wollen, dann können Sie sie in [email protected] finden:

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

Ok, ich getestet, dass und bekam ziemlich nah dran. Es hat den vollen Inhalt gedruckt. Ich nehme an, ich hätte das in meinen Beitrag aufnehmen sollen, aber ich habe viel vom Skript entfernt. Ich übergebe 4 andere Variablen von PHP nach bash, wenn ich $ $ benutze, druckt es ALLE Variablen, aber ich brauche nur was im Array ist. Also jetzt, um das herauszufinden. – fcamp

+0

'$ @' enthält alle Parameter, die an das Shell-Skript in der Befehlszeile übergeben werden. – axiac

+0

Ich habe Ihre korrekt markiert, da es korrekt war, wie ich die Frage gestellt habe, aber ich denke, dass ich es weiter herausfinden muss, damit es alle Parameter richtig behandelt. Danke für Ihre Hilfe. – fcamp