Concatena múltiplas strings com espaços nelas?

2

Estou tentando fazer o seguinte no shell do ksh:

JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation

SMOKE_JMX_LOCATION="$JMX_ROOT/\"Smoke Set\"/*.txt $JMX_ROOT/\"Smoke Set\"/*.TXT 
$JMX_ROOT/\"Smoke Set\"/SmokeSet.jmx"

cp $SMOKE_JMX_LOCATION /var/tmp

Ou seja. copie arquivos .txt, .TXT e .jmx de um diretório para outro, mas estou recebendo erros por causa dos espaços em "Conjunto de Fumaça".

Qualquer ajuda é muito apreciada.

    
por Rory 27.10.2011 / 13:14

1 resposta

2

Você geralmente não pode colocar vários caminhos em uma única string, porque qualquer *, que é uma string válida, também é um caminho válido na maioria dos sistemas de arquivos. Você poderia usar uma matriz:

JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation
set -A SMOKE_JMX_LOCATIONS "$JMX_ROOT/Smoke Set/"*.txt "$JMX_ROOT/"Smoke Set"/"*.TXT "$JMX_ROOT/Smoke Set/SmokeSet.jmx"
cp "${SMOKE_JMX_LOCATIONS[@]}" /var/tmp

* Antes que alguém proteste sobre / e %code% , o primeiro não pode fazer parte de uma variável (pelo menos se o ksh funcionar como Bash ; não conseguiu encontrar uma referência), e o último não pode ser parte de nomes de arquivos , mas é muito válido em caminhos .

    
por 27.10.2011 / 13:25