Passe o intervalo {$ XX .. $$ YY} para o comando cp no script bash [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    

Estou tentando escrever um script que copie um intervalo de arquivos. Os valores do intervalo são obtidos de dois arquivos diferentes usando os comandos grep, awk e cut.

Os nomes dos arquivos que eu quero copiar estão no intervalo da seguinte forma: MYSQLTEST_binlog.000001 para MYSQLTEST_binlog.001536.

Eu pego o primeiro intervalo da seguinte forma:

XX='head -30 /data/backup.sql | grep -w 'MYSQLTEST_binlog.*' | awk -F "." '{ print $2 }' | cut -f1 -d "'"'

O valor de XX é, digamos, 000055.

Eu pego o valor do intervalo em outra variável da seguinte forma:

YY=$(ls -l /data/mysql_data_dir/MYSQLTEST_binlog.* | grep -v index | tail -n 1 | awk -F "." '{ print $2 }')

O valor de

YY é, digamos 001536. Esses valores estão sendo coletados corretamente.

Agora estou tentando passar esses valores para o comando cp da seguinte forma:

cp -ar /data/mysql_data_dir/MYSQLTEST_binlog.{$XX..$$YY} /data/binlog

E eu recebo o cp não pode stat /data/mysql_data_dir/MYSQLTEST_binlog.{000050..001536}.

Ele não considera esses valores como um intervalo.

A seguir, meu script:

#!/bin/bash

XX=$(head -30 /data/mysql_data_dir/backup.sql | grep -w 'MYSQLTEST_binlog.*' | awk -F "'" '{ print $2 }') ; echo $XX

YY=$(ls -l /data/mysql_data_dir/MYSQLTEST_binlog.* | grep -v index | tail -n 1 | awk -F "." '{ print $2 }') ; echo $YY

cp -ar /data/mysql_data_dir/MYSQLTEST_binlog.{$XX..$YY} /data/binlog
    
por Avinash Pawar 12.04.2018 / 08:58

0 respostas