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
$