Моя не очень плохая версия для реализации это:
function bashFileConvert($file)
{
return preg_replace('/([^\/\s]+\s+[^\/]+)(\/|$)/','"${1}"${2}',$file);
}
, которая в основном обрабатывает проблему, когда в имени файла есть пробел, например
$flie = '/usr/local/my test file.txt'
пока не будет узнаваемым для Bash.
Так что мне нужно конвертировать в
$file = '/usr/local/"my test file.txt"'
перед вызовом чего-то вроде:
exec('ls ' . $file);
Но есть еще много других угловых случаев, таких как кавычка и проблема '&'.
Итак, есть ли готовая версия для этой работы?
==================================
Теперь я попробовал escapeshellarg (), но здесь немного странно:
$file = '/usr/local/apache2/resumes_txt/5/San Francisco/qtzhang/Device "Engineer"/Job Resume Qintao Zhang.pdf.txt';
echo escapeshellarg($file);
D:\\test>php test.php
"/usr/local/apache2/resumes_txt/5/San Francisco/qtzhang/Device Engineer /Job Resume Qintao Zhang.pdf.txt"
Кажется, с этой функцией кавычка заменяется пробелом.