tenho o seguinte
#!/bin/bash
function f1 ()
{
echo "all parameters with more than 2 characters"
}
f1 123 45 6789
Eu preciso fazer algo com parâmetros que tenham caracteres maiores que 2. Posso echo-los sem expandir "$@" para um loop e fazer verificações com wc -c
Nesse caso, preciso gerar123 6789
Você não precisa expandir
$@
, mas deve fazer um loop sobre ele:O
${#arg}
código pede o comprimento (em bytes) de$arg
.É mais fácil com
zsh
:${array:#pattern}
é remover da expansão do array os elementos que correspondem ao padrão (uma extensão sobre os operadores${var#pattern}
/${var##pattern}
ksh). Com oM
sinalizador de expansão do parâmetro (para matched ), isso faz o inverso e retém apenas os que correspondem.Nenhum comando externo (
wc
) necessário; tente usar "Parameter Expansion / Parameter length" no loop.