파일 이름이 바뀌면 에코를 표시하고 문자열 끝을 시작 부분으로 래핑하는 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;
}