我期望输出如下
$ ./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
。