Ich brauche Hilfe mit einem Skript. Ich möchte, dass dieses Skript "Det funkar med serier" in meine Protokolldatei einfügt.Shell variable match
#!/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
Ausgabe in der Protokolldatei.
2 = Family.Guy.S10E08.HDTV.Custom.HebSub.XviD-Extinct
3 = /media/store0/Serier/Family_Guy
Det funkar INTE
Wie man sehen kann ich die Regex in dem $ SERIER1 Variable erhalten kann nicht zu arbeiten, und ich kann nicht finden, wie es zu lösen.
Ich möchte, dass die If-Bedingung /media/store0/Serier/Family_Guy von einem Regex in der Variable z. ^/media/store0/Serier
Wie bekomme ich das, wenn ein Teil
elif [[ $3 =~ $SERIER1 ]]; then
zu arbeiten?
[shellcheck] (http://www.shellcheck.net) weist auf mehrere Probleme hin, wie zum Beispiel '[[..]]' in '/ bin/sh' undefiniert (benutze'/bin/bash') , und '2> & 1 >> $ LOGFILE' funktioniert nicht wie beabsichtigt (benutze' >> $ LOGFILE 2> & 1') –
Ich werde/bin/bash testen, wenn ich nach Hause komme – junkyhlm
Sie verwenden nicht-quoted Variablen in Ihrem Single-eckigen Bedingungen, die in Ihrem speziellen Fall möglicherweise kein Problem darstellen (keine Dateinamen mit Leerzeichen), sollten jedoch als robuster angegeben werden. Um das Debuggen zu erleichtern, fügen Sie "#!/Bin/bash -ue" als erste Zeile hinzu, um die Überprüfung der Variablenerweiterung zu aktivieren und bei Rückgabewerten, die nicht Null sind, Fail-Fasten zu aktivieren. Dies wird oft helfen zu erkennen, wo Probleme entstehen, indem Fehler nicht ignoriert werden. – Fred