Bashscript fazendo uma variável igual a um comando. comando de erro não encontrado

1

Oi eu continuo recebendo o erro

./imagehash.sh: line 2: =: command not found

Quando eu sei que eu defino a variável $CMD corretamente (eu tentei o comando fora do script bash e funcionou muito bem)

aqui está meu script bash

#!/bin/bash
 $CMD='md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd'
 echo $CMD

UPDATE

consertou o bash, então não há espaços na variável $CMD e coloque '' em torno dele, mas agora eu estou recebendo o arquivo de erro no such file or directory Eu olhei para o caminho e copiei a letra por letra e está correto.

o que estou fazendo de errado aqui?

    
por Lmnoppy 06.04.2015 / 12:08

1 resposta

12

O código correto é este:

#!/bin/bash
CMD=$(md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd)
echo $CMD
  1. Para atribuir uma variável , nunca coloque um sinal $ antes . A atribuição de variáveis no bash é assim:

    MYVAR="CONTENT"
    
    • Uma atribuição de variável incorreta é aquela que contém espaços ao redor do sinal de igual ou tem um dólar antes do nome da variável a ser atribuída. (por exemplo, $MYVAR = "CONTENT" )
  2. Para criar uma variável com a saída do programa, você pode usar $(mycommand) . Isso executará mycommand e retornará sua saída.

  3. A saída de md5sum será assim:

    f110abe5b3cfd324c2e5128eb4733879 image.dd
    

    Se você deseja isolar a soma md5 do nome do arquivo, você pode usá-lo:

    CMD=$(md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd | cut -d ' ' -f 1)
    

    ou isto:

    CMD=($(md5sum ../Desktop/cases/CourseworkCase/Evidence/image.dd))
    
por Helio 06.04.2015 / 12:12