我需要一些脚本帮助。我希望这个脚本能够将“Det funkar med serier”回显到我的日志文件中。
#!/bin/sh
HDFILM1=/media/store1/HD-film
HDFILM2=/media/store2/HD-film
SERIER1="/media/store0/Serier*"
SERIER2=/media/store2/Serier
LOGFILE=/home/holmen/script/rtorrent_unrar_move_files.sh.log
rm -rfv $LOGFILE
echo 2 = $2 2>&1 >> $LOGFILE
echo 3 = $3 2>&1 >> $LOGFILE
if [ $3 = $HDFILM1 ] || [ $3 = $HDFILM2 ]; then
echo "Det funkar med filmer" 2>&1 >> $LOGFILE
elif [[ $3 =~ $SERIER1 ]]; then
echo "Det funkar med serier" 2>&1 >> $LOGFILE
else
echo "Det funkar INTE" 2>&1 >> $LOGFILE
fi
日志文件中的输出。
2 = Family.Guy.S10E08.HDTV.Custom.HebSub.XviD-Extinct
3 = /media/store0/Serier/Family_Guy
Det funkar INTE
正如你所看到的,我无法在 $ SERIER1 变量中使用正则表达式来工作,我无法找到解决方法。
我希望if条件与变量中的正则表达式中的 / media / store0 / Serier / Family_Guy 匹配,例如的 ^ /媒体/ store0 / Serier
我如何获得if部分
elif [[ $3 =~ $SERIER1 ]]; then
要工作吗?
答案 0 :(得分:1)
请注意,您的SERIER1
变量不包含正则表达式。它包含一个glob。 Globs是另一种模式规范语言,如regexp,但它们不兼容。
在glob中,*
表示零或更多的任何内容
在正则表达式中,*
表示零个或多个前一个字符
这种区别很重要。模式:
r*
在glob匹配rainbow
和range
以及r
在正则表达式匹配r
和rr
以及rrrrrr
所以,你有这种模式:
/media/store0/Serier*
仅匹配:/media/store0/Serier
或/media/store0/Serierrr
或/media/store0/Serierrrrrrr
等。
我认为你想要的是:
/media/store0/Serier.*
因为在regexp中{{1}}意味着什么。因此.
表示零或多于等于glob中的.*
的任何内容。