Автор Тема: Здравейте някой ако може да помогне с тази грешка.  (Прочетена 902 пъти)

supportpc

  • Участник
  • *****
  • Публикации: 75
    • Профил
Това е скрипта

#!/bin/sh
adddomainblock()
{
if [ ! -z "$1" ] ; then
echo Blocking domain $1 with bind
sed "/"$1/d" -i /etc/bind/blacklisted.domains
echo zone "$1" {type master; file "blacklisted.zones";}; >> /etc/bind/blacklisted.domains
else
echo "!! Need domain to handle"
fi
}


това е грешката
./adddomainblock: 13: ./adddomainblock: Syntax error: Unterminated quoted string
Активен

remotexx

  • Участник
  • *****
  • Публикации: 663
    • Профил
предполагам грешката е в тоя ред - само там има нечетен брой кавички
Код
GeSHi (Bash):
  1. sed "/"$1/d" -i /etc/bind/blacklisted.domains
пробвай с единични кавички
Код
GeSHi (Bash):
  1. sed '/"'"$1"'/d' -i /etc/bind/blacklisted.domains


Също така имай предвид че и в текста (мачнат от $1) някой неща трябва да се искейпват за да станат правилно форматиран регулярен израз
напр. /1.2.3.4/ ще мачва още и '112.3.4' защото '.' мачва всеки един символ
докато /1\.2\.3\.4/ ще мачва само '1.2.3.4.'
още специални символи от рег. изрази - [] () {} . * etc.

Ако ще мачваш само IP адреси - теб те интересуват само '.' и '[]' ако имаш IPv6

The notation in that case is to encode the IPv6 IP number in square brackets:
http://[2001:db8:1f70::999:de8:7648:6e8]:100/

That's RFC 3986, section 3.2.2: Host
A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax. In anticipation of future, as-yet-undefined IP literal address formats, an implementation may use an optional version flag to indicate such a format explicitly rather than rely on heuristic determination.
« Последна редакция: Ное 16, 2018, 18:55 от remotexx »
Активен

nslave

  • Участник
  • *****
  • Публикации: 78
  • Distribution: Fedora / Debian
  • Window Manager: Xfce
    • Профил
Предполагам, че това целиш.

Код
GeSHi (Bash):
  1. #!/bin/sh
  2. adddomainblock()
  3. {
  4. if [ ! -z "$1" ] ; then
  5. echo Blocking domain $1 with bind
  6. sed "/$1/d" -i /etc/bind/blacklisted.domains
  7. echo "zone \"$1\" {type master; file \"blacklisted.zones\";};" >> /etc/bind/blacklisted.domains
  8. else
  9. echo "!! Need domain to handle"
  10. fi
  11. }
  12.  
  13. adddomainblock $1
  14.  

Също така няма необходимост да е във функция ако ще е гол скрипт.
А за да можеш да стигнеш сам до отговора друг път, първо се чете грешката. Syntax error: Unterminated quoted string трябва да те насочи към това, че имаш проблем с кавичките. Следващата ти стъпка е да разбереш къде е проблема, защото явно не е на 13-ти ред, защото нямаш толкова редове. Коментираш всичко с # и откоментираш по един ред във функцията и if-a, да видиш кой гърми или пък се опитваш да ги изпълниш като ги paste-неш в терминала (може да смениш файла върху, който действат, че да не се заколиш).
« Последна редакция: Ное 16, 2018, 18:51 от nslave »
Активен

supportpc

  • Участник
  • *****
  • Публикации: 75
    • Профил
Благодаря Колега.
Активен