我有一个对多个文件进行操作的 bash 脚本,但该操作不应发生在文件的特定子集上 - 如果文件名匹配~ .jpg [例如,在 myimage~xa.jpg 中]。
declare -a AFileList2
for sFile in *.jpg
do
echo "Testing $sFile"
if [ -d "$sFile" ]
then
echo "skipping directory $sFile"
else
if [ -f "$sFile" ]
then
if [[ "$sFile" =~ "*~*.*" ]]
then
echo "skipping $sFile"
else
echo "operating on $sFile"
AFileList2+=($sFile)
((iFilesFound++))
fi
fi
fi
done
echo "Found by eval: $iFilesFound file(s)"
上面 for 循环的关键部分是行
if [[ "$sFile" =~ "*~*.*" ]]
但它不起作用。
我从 pdf Advanced bash scripting guide 中的一个示例中获得它,其中演示脚本读取:
#!/bin/bash
variable="This is a fine mess."
echo "$variable"
if [[ "$variable" =~ "T*fin*es*" ]]
# Regex matching with =~ operator within [[ double brackets ]].
then
echo "match found"
# match found
fi
但即使是这个演示脚本也不能按预期工作。
任何帮助