количество символов, оставшихся в переменной bash? [закрыто]

0

Как я могу в bash-скрипте иметь переменную из 300 символов, которую можно ввести в нее, и она отображает количество оставшихся символов, пожалуйста? В этом случае символы будут числами, соответствующими каналу из get-iplayer, с максимум 4 символами в блоке, отделенном от следующего пробелом. Соответствующий сценарий следует -

!#/bin/bash
{
    read -n1 -p "Do you want to download some tv programmes? [y/n/q] " ynq ;
case "$ynq" in 
    [Yy]) echo
  read -n300 -p "Please input the tv programme numbers to download [max 300 characters]  " 'tvbox'
          echo
          cd /media/$USER/back2/proggies/
          /usr/bin/get-iplayer --get $tvbox
          ;;
    [Nn]) echo;;     # moves on to next question in the script
    [Qq]) echo; exit;;            # quits
    * ) echo "Thank you ";;
 esac

};

То, что я ищу, - это обратный отсчет символов, оставленных в 'tvbox', который начинается с 300. Введенные числа будут в диапазоне от 15 до 2000 и будут разделены пробелами, но эти пробелы также будут учитываться до итоговой суммы. Это можно сделать, пожалуйста?

boudiccas
источник
Примечание для читателей: тот же вопрос о stackoverflow: stackoverflow.com/q/21338070/7552
Гленн Джекман
Похоже, что этот вопрос не по теме, поскольку он был опубликован в переполнении стека .
Slhck

Ответы:

0

Это читает один номер программы за раз и обеспечивает обратный отсчет количества доступных символов:

while true
do
    ((chars_left = 300 -${#tvbox}))
    read -p "Input a program number of up to $chars_left characters or type 'quit' when done: " new_pgm
    [ "$new_pgm" = quit ] && break
    if [ $chars_left -gt ${#new_pgm} ]
    then
        tvbox="$tvbox $new_pgm"
    else
        echo "Sorry.  You are over your character limit."
        break
    fi
done
John1024
источник
Блестящий, большое спасибо, это работает очень хорошо.
Boudiccas