![하위 문자열은 올바르게 일치하는 bash 스크립트입니다.](https://linux55.com/image/162385/%ED%95%98%EC%9C%84%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%80%20%EC%98%AC%EB%B0%94%EB%A5%B4%EA%B2%8C%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9E%85%EB%8B%88%EB%8B%A4..png)
파일 이름과 파일에 포함된 문자열이 포함된 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