이상한 파일 경로 래핑

이상한 파일 경로 래핑

파일 이름이 바뀌면 에코를 표시하고 문자열 끝을 시작 부분으로 래핑하는 AWS AMI Linux EC2 인스턴스의 명령줄에서 실행되는 PHP 스크립트가 있습니다. 문자열은 다음과 같아야 합니다.

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에는 아무런 문제가 없다고 생각합니다. 위와 같은 경로가 있는 문자열에서만 발생하는 것 같습니다.

답변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;
}

관련 정보