Array em script de shell

0

Eu quero armazenar a saída do comando diff em uma matriz e encontrar o comprimento da matriz usando um script Bash. Eu tentei isso, mas não funcionou:

arr=( $(diff -w file1 file2 | grep '<' | awk '{print $10}') )

arr=( $(diff -w file1 file2 | grep '>' | awk '{print $10}') )

echo "$arr"
echo "number of files : ${#arr[@]}"
    
por Krishna Priyanka 09.12.2015 / 21:32

1 resposta

2

A partir do que você descreve, você não precisa de um array. O comprimento da matriz seria igual ao número de palavras. Existe um comando para isso: wc ("contagem de palavras").

No entanto, olhando para estes comandos:

% bl0ck_qu0te%

Meu palpite é que o que você realmente quer é: extrair a coluna 10 das linhas que começam com < ou > :

files=($(diff -w file1 file2 | awk '/^[<>]/ {print $10}') )

Ainda melhor usando readarray / mapfile para evitar sub-shells (obrigado @kos para a dica) :

readarray files < <(diff -w file1 file2 | awk '/^[<>]/ {print $10}')
    
por janos 29.12.2015 / 12:16