이 작은 bash 스크립트가 있습니다.
readonly imagick_extension=$(cat "${php_configuration_file}" | grep imagick)
echo "Imagick extension grep value: $imagick_extension"
if [ "${imagick_extension}" != "extension=imagick.so" ]; then
echo "ERROR: Imagick PHP extension is not enabled!"
exit 1
fi
echo "Imagick PHP extension is enabled."
출력은 다음과 같습니다
Imagick extension grep value: extension=imagick.so
ERROR: Imagick PHP extension is not enabled!
어떻게 이럴 수있어?
변수의 값을 나타냅니다.예
extension=imagick.so
,그러나 여전히 if 절을 입력합니다. 만족하는 경우에만 if 절을 입력해야 합니다.아니요
extension=imagick.so
미리 감사드립니다!
답변1
여기서 문제는 Windows에서 생성된 PHP 프로필이 있다는 것입니다. 따라서 줄 끝은 UNIX 표준 LF가 아닌 CR/LF입니다.
echo
다음과 같이 명령을 수정하여 이를 시연 할 수 있습니다 .
echo "Imagick extension grep value: < $imagick_extension >"
에서와 같이논평출력의 마지막 공백이 >
줄의 시작 부분에 있는 것을 볼 수 있습니다. 이는 실제로 값에 개행 문자가 포함되어 있음을 나타냅니다.
>agick extension grep value: extension=imagick.so
간단한 해결책은 파일을 UNIX 형식으로 변환하는 것입니다.
dos2unix /path/to/php_configuration_file.ini
또는 간단한 명령이 없는 경우 dos2unix
다음 sed
대안을 사용할 수 있습니다.
sed -i 's/\r//' /path/to/php_configuration_file.ini
UNIX 및 Linux의 다른 곳에 중복된 답변이 있다고 확신하지만 찾을 수 없습니다. 지금까지 내가 얻은 가장 가까운 것은 더 자세한 내용을 제공하는 관련 항목입니다.