如何使用 if 语句检查一行中的字符串?

如何使用 if 语句检查一行中的字符串?

我期望输出如下

$ ./test.sh Manifest.txt
test/directory1/dir2/Main
test/directory1/dir2/Main contains Main
test/directory1/dir2/Main have string Main
directory2/dir3
directory2/dir3 dont have string Main

我正在使用如下脚本

#!/usr/bin/ksh
while IFS='' read -r line || [[ -n "$line" ]]; do
for project in $line
do
echo $project
if [[ "$project" =~ ^(Main)$ ]]; then
        echo "$project contain Main"
        exit 1
else
        echo "$project dont have Main"
fi
done
done < "$1"

但它没有返回预期的输出。

输出为

test/directory1/dir2/Main
test/directory1/dir2/Main dont have Main
dir2/dir3
dir2/dir3 dont have Main

答案1

正则表达式^(Main)$将与 中的完整字符串进行匹配$project。这似乎是一条路。问题是除非$project确切地 Main,比较将失败。这是因为表达式锚定到字符串的开头和结尾。

我相信只需将表达式更改为Main$即可为您解决问题。这将匹配Main中字符串的末尾$project

相关内容