Bash adicionar texto no script de linha [closed]

0

Tentando fazer meu script funcionar, mas não funciona. Aqui está o meu script

#!/bin/bash
a="* * * * * /home/server/scripts/check.sh"
b="0 06,18 * * * /home/server/scripts/checks2.sh"
sudo sed -i '28s/^/'$b'\n/' /var/spool/cron/crontabs/root
sudo sed -i '28s/^/'$a'\n/' /var/spool/cron/crontabs/root
exit

Como adicionar variável a ele? Acabei de receber sed -e incomplete 's' command .

    
por Keejxer 08.05.2016 / 01:01

1 resposta

1

Existem dois problemas com o comando sed :

  • as variáveis $a e $b não são citadas, o que faz com que o shell passe suas partes para sed como vários parâmetros e
  • o delimitador da substituição, "/" , também é encontrado nos valores de $a e $b .

sed aceita outros delimitadores, como vírgula e porcentagem. Você está usando vírgula, mas o percentual não é usado. Se você revisou o script para

#!/bin/bash
a="* * * * * /home/server/scripts/check.sh"
b="0 06,18 * * * /home/server/scripts/checks2.sh"
sudo sed -i '28s%^%'"$b"'\n%' /var/spool/cron/crontabs/root
sudo sed -i '28s%^%'"$a"'\n%' /var/spool/cron/crontabs/root
exit

ou até mesmo

#!/bin/bash
a="* * * * * /home/server/scripts/check.sh"
b="0 06,18 * * * /home/server/scripts/checks2.sh"
sudo sed -i "28s%^%$b\n%" /var/spool/cron/crontabs/root
sudo sed -i "28s%^%$a\n%" /var/spool/cron/crontabs/root
exit

isso resolveria os dois problemas.

    
por 08.05.2016 / 02:33