파일의 첫 번째 줄을 읽고 텍스트와 일치시켜야 합니다. 텍스트가 일치하면 특정 작업을 수행해야 합니다.
문제는 명령이 변수를 문자열과 비교할 수 없는 경우입니다.
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