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)