我想使用bash脚本检查一个字符串。
我有一系列使用后缀创建的档案,例如“part1.rar”,“part2.rar”或只是一些数字,表示“test99.rar”中的位置。我想基于检查当前部分不是第一部分来采取一些行动。
例如,“test99.rar”,“747547548.part2.rar”和“archivexyz.part123.rar”应该触发动作但是“hello1.rar”和“multiarchive.part1.rar”不应该。我尝试了这个失败:
if [[ "$archive" = *.part[>1].rar ]]
then
echo "test - greater as 1"
fi
以下代码正在运行,但一次只能使用一位数字:
if [[ "$archive" = *.part2.rar ]]
then
echo "test - greater as 1"
fi
你能帮我找一个解决方案吗?
答案 0 :(得分:1)
这应该适合你:
if [[ $archive =~ ([2-9]|[1-9][0-9]+).rar$ ]]
then
echo "test - greater as 1"
fi
请注意=~
运算符,这是在bash中使用正则表达式匹配字符串时应该使用的运算符。有关bash上正则表达式可行的更多详细信息,请参阅this article。
答案 1 :(得分:0)
真正的oneliner:
sed 's/.*[^0-9]1.rar//;t;s/.*/test - greater than 1/' $archive