Como passar argumentos para bash shell script ao executar esse comando com?

5

Eu tenho um script de shell que aceita um argumento e usa isso no script. Então, para executar o script, eu digito /path/to/script argument

O problema é ao tentar configurar esse arquivo para ser executado usando o utilitário at . Eu tentei

at -f /path/to/script argument 17:45

at -f '/path/to/script argument' 17:45

mas nenhuma dessas opções funciona. Primeiro um recebe um erro de sintaxe e o segundo diz que não há tal arquivo Alguma sugestão?

    
por Elmer 25.10.2012 / 02:41

3 respostas

6

Como at é o padrão de leitura da entrada padrão, você pode fazer isso:

echo /path/to/script argument | at 17:45
    
por 25.10.2012 / 08:10
1

Eu recomendaria seguir o conselho de @ warl0ck no caso geral - criar um novo script, por exemplo /path/to/newscript :

 #!/bin/bash
 /path/to/script argument

e depois executá-lo usando at :

 at -f /path/to/newscript 17:45

Isso facilita ajustar quaisquer argumentos necessários, executar vários comandos, etc.

Como alternativa, para uso ocasional ou único, você pode executar at com o tempo escolhido e, em seguida, digitar o (s) comando (s) necessário (s) na entrada padrão; % hit% co_de to end:

 myhost# at 17:45
 /path/to/script argument
 <ctrl-D>
 Job 1 will be executed using /bin/sh
    
por 25.10.2012 / 07:53
1

Eu também tive esse problema e resolvi usando o EOF.

Isso está iniciando uma conexão ssh com sshserverhost que executa test.sh com o parâmetro $HOSTNAME no servidor remoto (sshserverhost).

at now + 1 minutes <<EOF
ssh -t sshserverhost 'bash -s' <~/test.sh $HOSTNAME
EOF 
    
por 20.10.2014 / 21:08