Expansão e atribuições variáveis de Bash

2
#!/bin/bash
echo "hello world"
$a='~'
$b='$a/nlu'
echo $b

Eu tenho

./test.sh: line 3: =~: command not found
./test.sh: line 4: =$a/nlu: No such file or directory

como erros qual é o problema?

    
por william007 22.01.2018 / 10:39

1 resposta

6

Use isso:

#!/bin/bash

echo "hello world"
a='~'
b="$a/nlu"
echo $b
  • Não use $ para atribuições.

  • b='$a/nlu' - Expressões como $a não se expandem entre aspas simples, use aspas duplas para isso.

  • Como apontado por @steeldirver ./test.sh: line 4: =$a/nlu: No such file or directory é o resultado de $b expandir para nada, pois a atribuição não foi feita corretamente e, em seguida, bash tenta executar =$a/nlu como um comando. Exatamente o mesmo para ./test.sh: line 3: =~: command not found se aplica.

Para erros futuros, use shellcheck do pacote de mesmo nome ou de sua versão on-line .

    
por M. Becerra 22.01.2018 / 11:21