Dividir linha com palavras de tamanho máximo de 8 caracteres

3

Estou criando um script que exibirá 2 vezes o nome da música no nome da estação de rádio FM. O nome da estação de rádio é limitado a 8 caracteres. Vamos dizer que eu tenho essa linha: Best Direction - I feel good

O código ficará assim: (o "PS" é o software de início de linha, sabe que é o comando para mudar o nome)

echo "PS Best" > $fifo;
sleep 1;
echo "PS Directio" > $fifo;
sleep 1;
echo "PS n - I" > $fifo;
sleep 1;
echo "PS feel" > $fifo;
sleep 1;
echo "PS good" > $fifo;
sleep 1;
//repeat this one more time

Como fazer isso no script bash? Eu não tenho ideia.

    
por PepinCZ 26.12.2015 / 18:00

1 resposta

3

Com fold de GNU Core Utilities :

a="Best Direction - I feel good"
fold -s -w 8 <<< "$a" | while read -r line; do 
  echo "PS $line" > "$fifo"
 sleep 1
done

Saída para $ fifo:

PS Best
PS Directio
PS n - I
PS feel
PS good

Sem fold com a mesma saída para $ fifo:

a="Best Direction - I feel good"
while [[ -n $a ]]; do     # loop until $a is empty
  if [[ ${#a} -gt 8 ]]; then
    b="${a:0:8}"          # get first 8 characters of $a
    c="${b% *}"           # crop all from right incl. first whitespace
  else
    c="$a"
  fi
  echo "PS $c" > "$fifo"
  d="${a#$c}"             # crop $c left from string $a
  a="${d# *}"             # remove a leading whitespace
  sleep 1
done
    
por 26.12.2015 / 18:11