ls -td falha em identificar quaisquer diretórios

0

Estou tendo um problema ao trabalhar em um script de shell. Um dos comandos dentro do script é usado para enviar um conjunto de comandos de um host Jenkins para hosts de banco de dados MySQL para executar backups "localmente" nos bancos de dados MySQL.

O problema ocorre quando exportamos uma variável para uso posterior. Exemplo anonimizado:

ssh -q -o Batchmode=yes mysql@${host} \
"export variable=$(ls -td ${backup_path}/FULL/*/ | head -1); \
echo $variable"

O objetivo do ls -td é puxar o diretório por escrito mais recente no subdiretório ${backup_path}/FULL .

O erro que recebo ao executar este comando em particular é

ls: cannot access ${backup_path}/FULL/*/: No such file or directory

O eco de $incr_basedir também retorna uma saída nula.

Eu já tentei verificar a existência de um subdir e verificar as permissões em $ {backup_path} / FULL, aqui está a saída:

-bash-4.2$ pwd
${backup_path}/FULL
-bash-4.2$ ls -l
total 498
drwxr-x---. 28 mysql mysql   2019 May  3 16:53 2017-05-03_16-47-37

Como devo proceder para abordar o meu objetivo?

    
por Josh Bonello 08.05.2017 / 16:29

1 resposta

1

Os problemas foram causados devido ao escopo, como Eric mencionou anteriormente.

Eu tinha muitas variáveis locais sendo enviadas e enviadas através das instruções do composto ssh que não estavam listadas, o que exigia o uso de aspas duplas. Como queria que o ls-td fosse executado remotamente, criei um comando ssh inteiramente novo especificamente para definir essa variável. Uma vez que a variável foi definida, eu entrei como qualquer outra.

    export variable="$(ssh -q -o Batchmode=yes mysql@$host 'ls -td ${backup_dir}/FULL/*/ | head -1')"

O erro não persiste mais. Meu problema era, na verdade, o escopo em que o host local não tinha a mesma estrutura de diretórios que o host remoto.

    
por 08.05.2017 / 17:36