Мне нужна помощь со сценарием. Я хочу, чтобы этот сценарий отображал «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
Как я получить, если часть
elif [[ $3 =~ $SERIER1 ]]; then
Для работы?
[shellcheck] (http://www.shellcheck.net) указывает на несколько вопросов, таких как '[[..]]' не определено в '/ bin/sh' (используйте'/bin/bash') , и '2> & 1 >> $ LOGFILE' не работает по назначению (используйте' >> $ LOGFILE 2> & 1') –
Я буду тестировать/bin/bash, когда я вернусь домой – junkyhlm
Вы используете некотируемые переменные внутри своего однострочного условия, которые в вашем конкретном случае не могут быть проблемой (без имен файлов, содержащих пробелы), но должны быть указаны как более надежные. Чтобы помочь отладке, попробуйте добавить «#!/Bin/bash -ue» в качестве первой строки, чтобы включить проверку расширенного расширения и сбой при отсутствии ненужных кодов возврата. Это часто помогает понять, откуда возникают проблемы, не допуская неудачи. – Fred