A matriz de comandos canalizados falha

1
Primeiro, peço desculpas se isso foi perguntado antes, eu procurei aqui e StackOverflow, tentei as man pages, e ainda estou desenhando um espaço em branco.

Estou tentando escrever um script que montará automaticamente as unidades de arquivo do nosso servidor na inicialização (por motivos de segurança, nada anexado à máquina é montado automaticamente pelo sistema).

O que eu tenho até agora é isso:

#! /bin/bash
archives=( 'ls /dev/disk/by-label/ | sed -rn 's/.*archive\x20(.*)//Ip'|sort -d')

echo "Output of the Commands piped to array:"
for arcNum in ${archives[@]}; do
    echo "mounting Archive: $arcNum"
done

echo "Desired Output of Command:"
ls /dev/disk/by-label/ | sed -rn 's/.*archive\x20(.*)//Ip'|sort -d

A execução gera isso no terminal:

user@machine:~$ autoLoadArchives
Output of the Commands piped to array:
Desired Output of Command:
2
4
6
user@machine:~$

Se eu remover o sinalizador -n e o comando p do sed:

ls /dev/disk/by-label/ | sed -r 's/.*archive\x20(.*)//I'|sort -d

Acabo com a lista bruta não filtrada na matriz, mas uma lista não filtrada e devidamente substituída na versão da linha de comando:

user@machine:~$ autoLoadArchives
output of the Commands piped to array:
mounting Archive: Archive\x206
mounting Archive: MY-USB
mounting Archive: PFI\x20ARCHIVE\x202
mounting Archive: PFI\x20Archive\x204
Desired Output of Command:
2
4
6
MY-USB
user@machine:~$ 

Saída de $ ls /dev/disks/by-label/ :

user@machine:~$ ls /dev/disk/by-label/
Archive\x206  MY-USB  PFI\x20ARCHIVE\x202  PFI\x20Archive\x204
user@machine:~$ 

Eu tenho a horrível sensação de que o meu problema é provavelmente algo idioticamente arrogante, mas honestamente estou deixando um vazio em relação ao que está acontecendo aqui.

    
por Minothor 21.09.2015 / 12:57

1 resposta

2

As expressões posteriores interpretam alguns caracteres especiais (por exemplo, barras invertidas). Use $( ... ) em vez disso.

archives=( $(ls /dev/disk/by-label/ \
             | sed -rn 's/.*archive\x20(.*)//Ip' \
             | sort -d) )
    
por 21.09.2015 / 13:22