странная упаковка путей к файлам

У меня запускается PHP-скрипт из командной строки в экземпляре AWS AMI Linux EC2, который выдает эхо, когда он переименовывает файлы, и переносит конец строки в начало. Строка должна выглядеть примерно так:

renaming /var/scripts/_working_files/micros/import_micros_bkp/mytown/emp_def_out.sql to emp_def_out_mytown.sql

но получается так:

.sqlrenaming /var/scripts/_working_files/micros/import_micros_bkp/mytown/emp_def_out.sql to emp_def_out_mytown

Я не понимаю, почему она перемещает конец строки в начало строки. Мне нужно что-то изменить в bash? Я не думаю, что с PHP что-то не так. Это происходит только со строками, в которых есть путь, подобный указанному выше.

0
28.02.2017, 22:04
1 ответ

Это был конец строки характера. Обрабатываемый файл был создан в Windows (с помощью cr lf), но мой скрипт взрывал его на "n". Я создал простую функцию для определения и возврата того, какой символ eol используется. Он не является всеобъемлющим или совершенным, но он достаточно хорош для того, что нам нужно в нашей среде:

function detect_eol($options){
    /*
    options
        str
    */

    $str = $options['str'];

    $eol = array(
        array('raw' => "\r\n", 'str' => '\r\n'),
        array('raw' => "\n", 'str' => '\n')
    );

    for($x=0;$x<count($eol);$x++){
        $cur_eol = $eol[$x];
        if(strpos($str, $cur_eol['raw']) !== false){
            $retval = $cur_eol;
            break;
        }
    }

    return $retval;
}
0
28.01.2020, 04:48

Теги

Похожие вопросы