Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Linux and Unix  ~  скрипты shell вопросы
splav
Сообщение  12 Дек 2007, 15:57  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Мужской  Доверенный пользователь
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 жалуется на кавычки - получается, что не смотря на кавычки, он считает пробел разделителем параметров
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : JabberID : ICQ
Wadlax
Сообщение  12 Дек 2007, 22:22  Ссылка : Ответить с цитатой
Возраст: 41 Пол: Мужской 
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

В начало
Профиль : Личное Сообщение
splav
Сообщение  12 Дек 2007, 23:04  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Мужской  Доверенный пользователь
C нами с 22.01.2006
Репутация: 256.8

Wadlax, не помогает. Дело не в кавычках, а их восприятии. Кавычки программе передаются, по после такой передачи она их не воспринимает... В итоге сделал бинарник
main(int argc, char * arg[]){system(arg[1]);}

и им вызываю... но надо добить... Возможно sh -c "строка" поможет... Надо попробовать.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : JabberID : ICQ
Wadlax
Сообщение  13 Дек 2007, 9:31  Ссылка : Ответить с цитатой
Возраст: 41 Пол: Мужской 
C нами с 05.06.2005
Репутация: 83.1

splav, как-то можно проверить, какой тег в файл записался?
Просто я запускал таким образом - программа не ругалась на пробелы.
Но вот записала ли она теги нормально - не знаю.

Как я понял, смысл в том, чтобы при вызове программы wavpack из скрипта - сама переменная $title должна быть в кавычках. Тогда она подставляется как одно-целое.

К примеру - если в исходном скрипте заменить wavpack -hm $wparam "$2" на wavpack -hm "$wparam" "$2" , то программа будет ругаться на отсутствие файла: -w "Title=.......
В начало
Профиль : Личное Сообщение
splav
Сообщение  13 Дек 2007, 11:49  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Мужской  Доверенный пользователь
C нами с 22.01.2006
Репутация: 256.8

Wadlax, ну это естественно тоже не подходит. Он просто увидел всё это заключенным в кавычки и счёл еще одним файлом для кодирования. Проверить - любым понимающим wavpack плеером.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : JabberID : ICQ
Wadlax
Сообщение  13 Дек 2007, 21:46  Ссылка : Ответить с цитатой
Возраст: 41 Пол: Мужской 
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, то кавычек там не будет, конечно же Улыбочка
В начало
Профиль : Личное Сообщение
Keper
Сообщение  20 Апр 2014, 16:44  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 22.01.2007
Репутация: 136.4

Друзья, появилась необходимость в следующем:
скрипт проверяет (к примеру раз в 30 минут) определенный порт внешнего сервера (к примеру по принципу telnet), и если тот не откликается шлет сообщение на почту
С сообщением на почту проблем нет, приучен к SSMTP, вопрос в том как реализовать сам скрипт Юзер

Если у кого были похожие реализованные задачки, поделитесь, а? Улыбочка

Заранее спасибо.
В начало
Профиль : Личное Сообщение
MASTAK
Сообщение  20 Апр 2014, 17:36  Ссылка : Ответить с цитатой
Возраст: 37 Пол: Мужской  Доверенный пользователь
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
В начало
Профиль : Личное Сообщение : Сайт : SkypeID
Keper
Сообщение  20 Апр 2014, 18:58  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 22.01.2007
Репутация: 136.4

MASTAK, Благодарю Улыбочка С смс информированием в моём случае это лишнее, а вот с первым вариантом всё просто супер. Еще раз спасибо!
В начало
Профиль : Личное Сообщение
Показать сообщения:   

Unsorted   ~  Software  ~  Linux and Unix  ~  скрипты shell

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты