строкой set -xv      выполняемая строка будет выводится,  может быть  это поможет, если не этой ситуации то может с какой то другой.    Выполни отдельно эту строку посмотри что она выдает на консоль   cat $HOME/.tasks | grep -v $ID  с реальными ID и файлом в котором этот ID есть.         На bash TODO: вполне реально написать это полноценный язык , но bash очень капризный. Из-за пробелов в строках все валится, надо брать в кавычки переменные "${ID}" "${HOME}" и т.д    скорее тут именно в этом дело, может пробел в имени $HOME?      Эта строка тут лишняя , проверка не нужна  (if [[ $(grep $ID $HOME/.tasks) ]]           )    можно сразу грепать удаляя сроку c $ID  из листинга .tasks
                  
                  
                
Благодарю
Обсуждают сегодня