Как создать функцию переключения в оболочке, которая включается при одном вызове и выключается при другом? - PullRequest
1 голос
/ 23 марта 2020

например: мне нужна функция, которая бесконечно печатает символ при первом вызове и останавливается при следующем вызове. то, что я пробовал, это создание функции, которая имеет условие остановки и вспоминает его, как показано ниже. spin 1 запускает функцию, а spin 0 при повторном вызове просто ничего не делает, оставляя функцию бесконечно работающей. функция выглядит следующим образом:

spin()
{
  spinner=( "██" "████" "██████" "████████" "██████████" "████████████" "██████████████" "████████████████" "                ")
  i=0
  while :;
  do
    if [[ $1 -eq 0 ]]
    then
      break
    else
      echo -ne "\r${spinner[i%9]}"
      sleep 0.2
      i=$((i+1))
    fi
  done
}
spin $1

Может кто-нибудь предложить какой-нибудь обходной путь.

Я не могу использовать pgrep или grep и убить скрипт, так как он обязательно отображает сообщение «Killed» в терминале.

...