Não é possível afirmar-se ao executar um script bash

0

Eu tenho um script bash chamado a , localizado em /home/agrillet/ , onde faço este comando:

BOOTSTRAP_MODIF="stat -c %Y '/home/agrillet/a'"

A saída é: ./a: line 60: stat -c %Y '/home/agrillet/a': No such file or directory

Mas quando eu executo o mesmo comando no meu terminal, funciona:

$ stat -c %Y '/home/agrillet/a'
1517831544

Não estou executando o comando como root nos dois casos, alguém pode explicar o que está acontecendo e como conseguir informações sobre o script enquanto o executa?

Se eu usar outro comando no script, como cat /home/agrillet/a , posso imprimir o script a partir do próprio script.

    
por Armand Grillet 05.02.2018 / 12:57

1 resposta

4

Isto:

BOOTSTRAP_MODIF="stat -c %Y '/home/agrillet/a'"

Define a variável BOOTSTRAP_MODIF para a string stat -c %Y '/home/agrillet/a' . Não produz saída.

Se você expandir a variável posteriormente, como "$BOOTSTRAP_MODIF" (com aspas), obterá exatamente essa string, como uma string. A mensagem de erro parece com o Bash tentando executar um comando com esse nome (espaços e todos), o que você não tem.

Você pode executar o script com bash -x (ou sh -x ) ou usar set -x dentro do script para ver os comandos que o shell realmente tenta executar.

Veja BashFAQ 050 sobre como salvar um comando para uso posterior.

    
por 05.02.2018 / 13:13

Tags