Porque existem vários espaços que você deseja usar
${var%%[[:space:]]*}
# ...^^
para remover a substring anterior mais longa que começa com um espaço
Com apenas um único %
, você está removendo a seqüência mais curta de um espaço, seguida de zero ou mais caracteres, que é apenas o último espaço da string.
$ echo ">$var<"; echo ">${var%[[:space:]]*}<"; echo ">${var%%[[:space:]]*}<"
>2492 some string continues here <
>2492 some string continues here <
>2492<
Se você está apenas procurando pela primeira palavra , você pode fazer isso:
read -r word rest_of_string <<<"$var"
echo "I have: $word"
Isso cuidará dos principais espaços em branco, supondo que você não tenha alterado a variável IFS.