파일의 첫 번째 줄을 읽고 이를 쉘 파일의 문자열과 비교합니다.

파일의 첫 번째 줄을 읽고 이를 쉘 파일의 문자열과 비교합니다.

파일의 첫 번째 줄을 읽고 텍스트와 일치시켜야 합니다. 텍스트가 일치하면 특정 작업을 수행해야 합니다.

문제는 명령이 변수를 문자열과 비교할 수 없는 경우입니다.

file_content=$(head -1 ${file_name})
echo $file_content
if [[ $file_content = 'No new data' ]]; then
    echo "Should come here"
fi
echo $file_content
if [ "${file_content}" = "No new data" ]; then
  echo "Should come here"
fi

블록이 작동하지 않는 경우. 첫 번째 행에서 캡처하는 값에 문제가 있는 것 같습니다.

답변1

첫 번째 줄에는 인쇄할 수 없는 문자나 앞뒤 공백 또는 공백 이외의 공백 문자가 포함될 가능성이 높습니다( 에 전달할 때 변수를 인용하는 것을 잊어버렸습니다 echo). 먼저 청소할 수도 있습니다.

content=$(
  sed '
    s/[[:space:]]\{1,\}/ /g; # turn sequences of spacing characters into one SPC
    s/[^[:print:]]//g; # remove non-printable characters
    s/^ //; s/ $//; # remove leading and trailing space
    q; # quit after first line' < "$file_name"
)

if [ "$content" = 'No new data' ]; then
  echo OK
fi

관련 정보