최대 길이가 8자인 단어로 줄을 분할합니다.

최대 길이가 8자인 단어로 줄을 분할합니다.

FM 라디오 방송국 이름에 노래 이름을 두 번 표시하는 스크립트를 만들고 있습니다. 라디오 방송국 이름은 8자로 제한됩니다. 다음 줄이 있다고 가정해 보겠습니다.Best Direction - I feel good

코드는 다음과 같습니다. ("PS"는 라인 소프트웨어의 시작 부분입니다. 이름을 변경하는 명령이라는 것을 알아두세요)

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

Bash 스크립트에서 이를 어떻게 수행합니까? 나는 모른다.

답변1

fold팔로우GNU 핵심 유틸리티:

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

$fifo로 출력:

최고의 PS
PS 방향
nnJC
PS 느낌
좋은 PS

fold$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

관련 정보