ファイル名とファイルに含まれる文字列を含む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は必要ありません。このタイプの比較には2つの括弧が必要です。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