Bash ve PHP, komut satırı argümanlarını alıntı

4 Cevap php

Ben bir pdf dönüştürmek için bir Bash komut dosyası kullanan bir PHP programı var. Dosya adında boşluk içeriyorsa Ancak doğru bash script geçirilir değil.

Nasıl bir bash komut dosyası içinde boşluk içeren dosya adlarını kaçış? Eğer "OUTFILE" değişken dosya teklif için özel bir şey yapmak zorunda mı?

Bash script:

#!/bin/bash

INFILE=$1
OUTFILE=${INFILE%.*}

gs \
-q \
-dSAFER \
-dBATCH \
-dNOPAUSE \
-sDEVICE=png256 \
-r150x150 \
-sOutputFile=${OUTFILE}.png \
${INFILE}

PHP script:

echo "converting: ".$spool.$file . "\n";
system("/home/user/bin/pdf2png.sh " . escapeshellarg($spool . $file));

Edit: I escapeshellarg () Bir değişkeni tırnak kaldırıldı. Ancak bu sorunu çözmek değildi. Ben Bash script OUTFILE değişken olduğunu düşünüyorum.

4 Cevap

Kabuk script son satırında, değişken referans tırnak koymak:

"${INFILE}"

, Boşluk içeren bir dosya adı kaçmak sadece kullanın.

My Tar Ball.tar

My\ Tar\ Ball.tar

Peki ne için sizin argümanlar geri script çağrıldığında bölü veya kontrol bazı girdi eklemek gerekir içerdiğinden emin olmak gerekir ya.