проблема сценария Unix

Идеальным решением для покупки билетов не является решение "Enteprise".

Может быть большая реализация ServiceCenter, ServiceDesk, Средства, и т.д., там где-нибудь..., но я еще не видел его.

Я обнаружил веб-систему справочной службы под названием HelpSpot на Joel на форуме программного обеспечения, который выглядел фантастическим мне. Мы дали ему тест-драйв на работе, но не были enterprisy достаточно для нас. (Для крупных компаний, платя кому-то $150/часов для установки программного обеспечения похож на коз предложения богам вулкана.)

3
задан 18 June 2010 в 16:11
2 ответа

Необходимо устранить обратные галочки и изменить одинарные кавычки на двойные кавычки:

#!/bin/sh
ip=$1
echo $ip
sed -i .bak "\:#start ${ip}:,\:#end ${ip}:d" /usr/local/etc/racoon/racoon.conf

Используя двойные кавычки позволит переменным быть расширенными. Обратные галочки попытались бы выполнить стандартный вывод команды (который нет ни одного в этом случае). Например, если Вы сделали `echo hi` это попыталось бы выполниться "привет" как команда. sed всегда возвраты 0, если нет ошибка независимо от того, была ли замена сделана.

7
ответ дан 3 December 2019 в 05:09
  • 1
    Спасибо! работал. однако, если мы здесь, я хочу спросить Вас что-то еще (так как это было подпроблемой моей большой проблемы). У меня есть сценарий, названный rootexec.sh, который содержит код: #!/bin/sh должностное лицо 1$ (этот сценарий используется в качестве параметра для sudo). Проблема - это, если я использую script.sh 'sed-i .bak "\:#start 172.0.0.3: \:#end 172.0.0.3:d"/usr/local/etc/racoon/racoon.conf' (sed быть параметром за 1$ для исполнительной команды), я получаю эту ошибку: sed: 1: ""\:#start": недопустимый код команды ". у должностного лица, кажется, есть проблема с ним? –  Darie Nicolae 18 June 2010 в 16:54
  • 2
    я должен отправить это как отдельную проблему? –  Darie Nicolae 18 June 2010 в 17:41
  • 3
    @Darie: существует серьезная угроза безопасности передачи команд как параметры к сценариям, которые получают выполненное использование sudo. Тем не менее Вы могли бы попытаться поместить двойные кавычки вокруг $1: exec "$1". Также считайте BashFAQ/050. –  Paused until further notice. 18 June 2010 в 17:51
  • 4
    с "1$" я получаю эту ошибку: должностное лицо: sed-i .bak "\:#start 172.0.0.2: \:#end 172.0.0.2:d"/usr/local/etc/racoon/racoon.conf: не найденный я работаю над системной сборкой кем-то еще, и я должен использовать их сценарии. –  Darie Nicolae 18 June 2010 в 18:15
  • 5
    @Darie: следующая вещь, которую я предложил бы пробовать, вместо двойных кавычек, выйдите из обратных косых черт или используйте наклонные черты вправо: script.sh 'sed -i .bak "\\:#start 172.0.0.3:,\\:#end 172.0.0.3:d" /usr/local/etc/racoon/racoon.conf' или script.sh 'sed -i .bak "/#start 172.0.0.3/,/#end 172.0.0.3/d" /usr/local/etc/racoon/racoon.conf' –  Paused until further notice. 18 June 2010 в 18:48

Обратные галочки действительно не необходимы (или возможно я понимаю Вас неправильно). То, что сценарий возвращается 0, также ожидается: код выхода 0 в порядке.Править: sed будет всегда выходить с 0, даже если не было никакой замены. Другой код выхода только затем сгенерирован, когда существует ошибка в Вашем синтаксисе.

Более интересный: код удален или нет?

Судя по Вашим комментариям, у Вас, вероятно, есть проблема с regexp и / или символы выхода в нем.

1
ответ дан 3 December 2019 в 05:09
  • 1
    на самом деле сценарий использует параметр (IP) #!/bin/sh ip= $ip эха за 1$ sed -i .bak '\:#start ${ip}:,\:#end ${ip}:d' /usr/local/etc/racoon/racoon.conf $ эха? Текстовый блок не становится удаленным из файла, даже если код возврата в порядке. –  Darie Nicolae 18 June 2010 в 16:16
  • 2
    .bak файл создается (который означает команду, выполнялся, однако блок кода, не был удален), –  Darie Nicolae 18 June 2010 в 16:19

Теги

Похожие вопросы