Se você preferir usar as aspas para substituição de comandos, então você tem que usar os backticks: ', não a aspa simples:', por exemplo. :
Len='echo $str | wc -c'
Como os outros mencionaram, você também pode usar a sintaxe len=$(...)
.
Estou tentando o seguinte:
Len='echo $str | wc -c'
Mas estou recebendo esta saída:
'Echo $str|wc -c'
O que estou fazendo de errado?
Se você preferir usar as aspas para substituição de comandos, então você tem que usar os backticks: ', não a aspa simples:', por exemplo. :
Len='echo $str | wc -c'
Como os outros mencionaram, você também pode usar a sintaxe len=$(...)
.
Len='echo $str | wc -c'
Isso definirá a variável Len
como a string echo $str | wc -c
(não produzirá nada).
O shell não executará nenhum dos comandos da string, já que não é uma substituição de comando.
Para obter a saída de um comando, use o comando de substituição, $(...)
:
Len=$( echo "$str" | wc -c )
Neste caso, também é possível usar
Len="${#str}"
que é muito mais rápido.
A expansão do parâmetro ${#parameter}
expandirá para o comprimento do valor de parameter
.
Você precisa atribuir à variável Len a saída do seu comando:
Len=$(echo "$str" | wc -c)