FMラジオ局名に曲名を2回表示するスクリプトを作成しています。ラジオ局の名前は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