|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
есть скрипт
#!/bin/sh
wvenc()
{
WVENCODE="wavpack -hm"
fields="Title Album Artist Year Genre Track"
Title='%t'
Album='%T'
Artist='%p'
Year=''
Genre='%g'
Track='%n'
wparam=''
for field in $fields; do
value=''
for conv in $(eval echo \$$field); do
value=$($CUEPRINT -n $1 -t "$conv\n" "$cue_file")
if [ -n "$value" ]; then
wparam="$wparam -w \"$field=$value\" "
break
fi
done
done
wavpack -hm $wparam "$2"
}
CUEPRINT=cueprint
cue_file=$1
shift
ntrack=$(cueprint -d '%N' "$cue_file")
trackno=1
if [ $# -ne $ntrack ]; then
echo "warning: number of files does not match number of tracks"
fi
for file in $@; do
wvenc "$trackno" "$file"
trackno=$(($trackno + 1))
done |
есть проблема... если wavpack'у из консоли скормить строку
wavpack -hm -w "Title=Ite, Missa Est" -w "Album=My Winter Storm" -w "Artist=Tarja Turunen" -w "Track=1" split-track01.wav
- всё нормально. Как эмулировать такой вызов из скрипта?
wavpack жалуется на кавычки - получается, что не смотря на кавычки, он считает пробел разделителем параметров
|
|
|
|
|
|
|
|
Возраст: 42 C нами с 05.06.2005 Репутация: 83.1
|
|
Мне кажется, проще выполнять такую строку
wavpack -hm -w \"Title="$title"\" ...остальные поля... "$2"
Также нашёл руководство, где кавычки описываются...
|
Advanced Bash-Scripting Guide
abs-guide-flat.tar.gz - 376.03 Kб
Скачиваний: 14
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
Wadlax, не помогает. Дело не в кавычках, а их восприятии. Кавычки программе передаются, по после такой передачи она их не воспринимает... В итоге сделал бинарник
main(int argc, char * arg[]){system(arg[1]);}
и им вызываю... но надо добить... Возможно sh -c "строка" поможет... Надо попробовать.
|
|
|
|
|
|
|
|
Возраст: 42 C нами с 05.06.2005 Репутация: 83.1
|
|
splav, как-то можно проверить, какой тег в файл записался?
Просто я запускал таким образом - программа не ругалась на пробелы.
Но вот записала ли она теги нормально - не знаю.
Как я понял, смысл в том, чтобы при вызове программы wavpack из скрипта - сама переменная $title должна быть в кавычках. Тогда она подставляется как одно-целое.
К примеру - если в исходном скрипте заменить wavpack -hm $wparam "$2" на wavpack -hm "$wparam" "$2" , то программа будет ругаться на отсутствие файла: -w "Title=.......
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
Wadlax, ну это естественно тоже не подходит. Он просто увидел всё это заключенным в кавычки и счёл еще одним файлом для кодирования. Проверить - любым понимающим wavpack плеером.
|
|
|
|
|
|
|
|
Возраст: 42 C нами с 05.06.2005 Репутация: 83.1
|
|
#!/bin/sh
wavpack -hm -w "Title=""$2" -w "Album=""$3" "$1" |
Вызывал строкой ./wpac.sh ...имяфайла... "a b c" "d e f"
Теги записались, проверял в EasyTag...
Если вывести эту команду через echo, то кавычек там не будет, конечно же
|
|
|
|
|
|
|
|
C нами с 22.01.2007 Репутация: 136.5
|
|
Друзья, появилась необходимость в следующем:
скрипт проверяет (к примеру раз в 30 минут) определенный порт внешнего сервера (к примеру по принципу telnet), и если тот не откликается шлет сообщение на почту
С сообщением на почту проблем нет, приучен к SSMTP, вопрос в том как реализовать сам скрипт
Если у кого были похожие реализованные задачки, поделитесь, а?
Заранее спасибо.
|
|
|
|
|
|
|
|
Возраст: 38 C нами с 23.01.2005 Репутация: 113.9
|
|
Keper, вот, но если предполагается проверять доступность сайта, то лучше все-таки дергать ссылку курлом
#!/bin/bash -i
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
emails=(email_1@site.ru email_2@site.ru)
mess=""
nc -z -w5 127.0.0.1 80 > /dev/null 2>&1
answer=$?
if [ "$answer" -eq 1 ]; then
mess="Error Server 127.0.0.1 port :80 "
fi
if [ "$mess" ]
then
echo "$mess" | mail -s "Check error (`date "+%H:%M %d.%m.%y"`)" ${emails[@]}
fi
|
С курлом и смски)
#!/bin/bash -i
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
emails=(email_1@site.ru email_2@site.ru)
if [ "`curl -s -m 60 http://site.ru/obuv | grep 2012-2014`" ]
then
echo "good" > /root/site_checks/states/my_site.ru
else
echo "fail" >> /root/site_checks/states/my_site.ru
fi
if [ "`cat /root/site_checks/states/my_site.ru | wc -l`" -gt 3 ]
then
mess="site.ru is down (`date "+%H:%M %d.%m.%y"`)"
echo -e "user=User_name\n pass=Pass_\n fromPhone=From_app\n tels=$tels\n mess=$mess" | sendmail -f email_1@site.ru post@websms.ru
echo "$mess" | mail -s "Check error (`date "+%H:%M %d.%m.%y"`)" ${emails[@]}
fi
|
|
|
|
|
|
|
|
|
C нами с 22.01.2007 Репутация: 136.5
|
|
MASTAK, Благодарю С смс информированием в моём случае это лишнее, а вот с первым вариантом всё просто супер. Еще раз спасибо!
|
|
|
|
|
|
|
|