
파일 이름과 파일에 포함된 문자열이 포함된 bash 스크립트가 있고 파일의 하위 문자열을 파일 이름(tar.gz)과 비교하여 일치하는지 확인하려고 합니다.
substr=$(echo "$(cat /home/user/configrc | grep Version)" | cut -d '_' -f4-5)
xfile="/home/user/data_1806_01.tar.gz"
echo $substr
echo $xfile
echo "Is $substr in $xfile"
if [ "$xfile" == *"$substr"* ]; then echo "Match"; else echo "No Match"; fi
출력은 다음과 같습니다
DD_DATA_AB_1806_01
1806_01
/home/user/data_1806_01.tar.gz
in /home/user/data_1806_01.tar.gz
No Match
일치 항목을 찾을 수 없습니다. 1806_01은 DD_DATA_AB_1806_01에 하위 문자열 일치 항목이 있어야 합니다. 또한 이상하게도 echo "Is $substr in $xfile" 줄이 올바르게 인쇄되지 않습니다. - "Is $substr" 또는 "Is 1806_01"이 누락되었습니다.
substr 끝에 일종의 종료가 필요합니까?
configrc 파일에는 Version=DD_DATA_AB_1806_01 행이 포함되어 있습니다.
나는 온라인에서 많은 예를 보았지만 내가 뭘 잘못하고 있는지 알 수 없습니다 ... 정말 간단한 질문입니다 ...
매우 감사합니다:)
센토스 7.2
답변1
주석에서 언급했듯이 문자열의 echo
및 to가 필요하지 않으며 이러한 유형의 비교에는 두 개의 괄호가 필요합니다.cat
grep
substr=$(grep 'Version' /home/user/configrc | cut -d '_' -f4-5)
xfile="/home/user/data_1806_01.tar.gz"
if [[ "$xfile" == *"$substr"* ]]; then
echo "Match"
else
echo "No Match"
fi