Ich würde den String gleich mit sprintf() zusammenbauen, macht es ein wenig einfacher…
PHP
$index = 1337;
$cmd = sprintf('/usr/bin/gs -sDEVICE=pdfwrite -o code_1%1$u.pdf -dFIXEDMEDIA -c "<</BeginPage{0.7 0.7 scale}>> setpagedevice" -f ./inp%1$u.pdf', $index);
var_dump($cmd);
// exec($cmd);
Oder falls man die Argumente im Script leichter abändern bzw. hinzufügen möchte…
PHP
// Falls der Index ein Integer sein soll und aus einer unsicheren Quelle kommt.
$index = abs((int) 1337);
$cmd = '/usr/bin/gs';
$args =
[
'-sDEVICE=pdfwrite',
'-o', "code_1{$index}.pdf",
'-dFIXEDMEDIA',
'-c', '<</BeginPage{0.7 0.7 scale}>> setpagedevice',
'-f', "./inp{$index}.pdf",
];
$c = count($args);
for($i = 0; $i < $c; $i++)
{
$cmd .= ' ' . escapeshellarg($args[$i]);
}
unset($args, $c, $i);
var_dump($cmd);
// exec($cmd);
Alles anzeigen
(Getestet mit PHP 7.2)