por que $ ($ var) dá erro?

1

Estou tentando executar o seguinte código no shell, mas não estou obtendo a saída como esperado. O comando é o seguinte:

i=1
echo $($i)

Estou recebendo um erro:

Command not found error

Eu acho que deveria mostrar o valor do primeiro argumento de linha de comando, ao invés de estar dando erro.

    
por jeffery3015 21.08.2018 / 09:52

1 resposta

2

Como o constructo $(...) é uma substituição de comando , então $($i) significa executar o conteúdo da variável $i . No seu caso, ele tentaria executar 1 , que o shell não pode encontrar.

Veja abaixo como ele falha, mas se criarmos um script chamado '1', ele funciona.

Exemplo:

$ i=1
$ echo "$($i)"
-bash: 1: command not found  
$ cat >1
#!/bin/bash
echo Hello World
$ chmod 755 1
$ PATH=$PATH:'pwd'
$ echo "$($i)"
Hello World
$

Para exibir o valor do primeiro argumento de linha de comando, você precisa de $1 ou ${1}

$ cat >mytest
#!/bin/bash
echo "arg 1 is $1"
echo "arg 1 is ${1}"
$ chmod 755 mytest
$ ./mytest foo
arg 1 is foo
arg 1 is foo
$
    
por 21.08.2018 / 10:01