The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Можно ли отключить вывод знаков табуляции у echo?, !*! inFlowiaLab, 13-Май-20, 15:19  [смотреть все]
Хочу чтобы в скриптах сохранялись табуляции для удобного чтения, но если их там оставлять то многострочный вывод вроде такого:

    echo "что то там
    и ещё что-то там
    "

приведёт к тому, что в консоли только первая строка начнётся с начала строки а остальные строки будут сдвинуты вправо согласно табуляции. Из за этого пишу все скрипты длинным монолитом без табуляции на условиях и циклах что потом аукается при отладке.

Можно как-то отключать вывод табуляции в echo, либо как её удалить?
Я вообще вывожу текст через собственные функции-оформляшки, могу внедрить удаление табуляций туда. Попытался таким образом:

# штатная болтовня
tellifl() {
  local s=$1
  s=${s//\t/}
  echo -en "$(tput setaf 2; tput bold)$s$(tput sgr0)"
}

то есть удалить через s=${s//\t/} - ничего не вышло. Все табуляции на месте. Хотя сама конструкция s=${s//\t/} успешно работает "в стендовых примерах"...

  • Можно ли отключить вывод знаков табуляции у echo?, !*! inFlowiaLab, 17:47 , 13-Май-20 (1)
    Ааа! Табуляцию нужно было удалять по реальной табуляции а не по "\t" теперь всё работает:

    delTabIFL() {
        echo "${1//"    "/}"
    }
    tellifl() {
        echo -en "$(tput setaf 2; tput bold)$(delTabIFL "$1")$(tput sgr0)"
    }

    Есть правда пара минусов у такой реализации:
    Почему-то обрубает финальный перенос строки если он оформлен нажатием на Enter а не через \n.
    То есть такой вариант:

    tellifl "fdsfsfd
        dffgdfgdfg
        dfsfdsfd
        "

    выводит всё это без последнего переноса строки. Если нужен перенос строки в конце нужно юзать именно \n а не Enter:

    tellifl "fdsfsfd
        dffgdfgdfg
        dfsfdsfd
        \n"

    Проблема номер 2 загадочна и непонятна - если редактировать текст скрипта в Atom то иногда табуляции никак не вырезаются пока не переоткроешь Atom и не сотрёшь все проблемные табуляции и не сделаешь их заново. (Случилось 1 раз)
  • Можно ли отключить вывод знаков табуляции у echo?, !*! ACCA, 23:36 , 13-Май-20 (3)
    > Хочу чтобы в скриптах сохранялись табуляции для удобного чтения, но если их
    > там оставлять то многострочный вывод вроде такого:
    >     echo "что то там
    >     и ещё что-то там
    >     "

    Есть такой редирект - "<<-". Например
          cat <<- ...
            что то там
            и ещё что-то там
          ...

    Скусывает ТАБУЛЯЦИЮ в начале строк.

    • Можно ли отключить вывод знаков табуляции у echo?, !*! inFlowiaLab, 19:51 , 14-Май-20 (4)
      > Есть такой редирект - "<<-". Например

      Блин, конкретно по этому редиректу инфы не нашёл. Ни разу не пользовался им и вообще редиректами ввода. Можете показать пример рабочего кода, чтобы я въехал как при помощи него на экран многострочный текст выводить?

      • Можно ли отключить вывод знаков табуляции у echo?, !*! ACCA, 21:51 , 15-Май-20 (5)
        >> Есть такой редирект - "<<-". Например
        > Блин, конкретно по этому редиректу инфы не нашёл. Ни разу не пользовался
        > им и вообще редиректами ввода. Можете показать пример рабочего кода, чтобы
        > я въехал как при помощи него на экран многострочный текст выводить?

        То, что я показал и есть пример рабочего кода. Сделай copy/paste, только в начале строк поставь не пробелы, а табуляции. INPUT TEXT в web не понимает, что такое табуляция. Посмотри, что получится.


        #!/bin/bash

        cat <<- ...
            слова
            слова
        ...


        • Можно ли отключить вывод знаков табуляции у echo?, !*! ACCA, 21:53 , 15-Май-20 (6)
          >[оверквотинг удален]
          > То, что я показал и есть пример рабочего кода. Сделай copy/paste, только
          > в начале строк поставь не пробелы, а табуляции. INPUT TEXT в
          > web не понимает, что такое табуляция. Посмотри, что получится.
          >
           
          > #!/bin/bash
          > cat <<- ...
          >  слова
          >  слова
          > ...
          >

          Документацию смотри здесь https://tldp.org/LDP/abs/html/here-docs.html

          • Можно ли отключить вывод знаков табуляции у echo?, !*! inFlowiaLab, 17:10 , 16-Май-20 (7)
            Спасибо! Понял: любой набор символов после <<- и тот же набор символов в последней строке - это ограничители сообщения, вот этого не понимал, думал - это троеточия от балды и не писал их) Код действительно работает в такой форме и действительно съедает табы но увы воспользоваться такой конструкцией я не смогу. Дело в том, что если передать туда текст при помощи переменной, а текст в переменной будет с табуляциями - эти табуляции будут сохранены. Жаль. Этот вариант с редиректом не съедает последний перенос строки, эта проблема была бы решена.
            Вот если что код который я пытался реализовать:

            tellifl() {
                cat <<- ...
                $(tput setaf 2; tput bold)$1$(tput sgr0)
                ...
            }

            #применение функции:
            tellifl "длинный
                   многострочный
                         текст
                               с табуляциями

            "


            Ладно, вприниципе проблема съедения последнего переноса строки не такая уж и проблема, просто заменять его на \n, да больше времени занимает чем Enter, но зато код компактнее.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру