<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Не получается создать переменную, из одних пробелов</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html</link>
    <description>Здравствуйте.&lt;br&gt;Не получается создать переменную, из одних пробелов&lt;br&gt;Задача состоит в том, чтобы в терминале (через Telnet) выводить заголовки перед каждым определенным действием.&lt;br&gt;Заголовок состоит из трех строк:&lt;br&gt;1 - 80 символов &quot;=&quot;&lt;br&gt;2 - Произвольный текст, размещенный по центру окна терминала&lt;br&gt;3 - 80 символов &quot;=&quot;&lt;br&gt;shell знаю не очень хорошо (Неделя прошла как начал изучать). Застрял на 2-м пункте.&lt;br&gt;&lt;br&gt;Вот такой код функции работает корректно. Строка центрируется.&lt;br&gt;func_ShowHead() &#123;&lt;br&gt;local sTab=$1; sLen=$&#123;#sTab&#125;; local xS=0;    # Привычка из Delphi&lt;br&gt;if ! &#091; -z $1 &#093;; then                         # Если строка получена&lt;br&gt;    let &quot;xS=80-$sLen&quot;; let &quot;xS=xS/2&quot;         # Рассчитываю, сколько пробелов нужно&lt;br&gt;# вывести перед выводом полученной строки для её центрирования &lt;br&gt;    while &#091; &quot;$xS&quot; -gt &quot;0&quot; &#093;; do              # Столько раз в цикле  &lt;br&gt;        sTab=&quot;-&quot;$sTab                        # !! добавляю вперед строки символ &quot;-&quot; !&lt;br&gt;        let &quot;xS-=1&quot;                          # уменьшаю счетчик&lt;br&gt;    done&lt;br&gt;fi&lt;br&gt;echo $sTab    </description>

<item>
    <title>Не получается создать переменную, из одних пробелов (erera22)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#9</link>
    <pubDate>Fri, 25 Dec 2015 11:46:59 GMT</pubDate>
    <description>Синтаксис printf: &#037;&amp;lt;кол-во символов&amp;gt;&amp;lt;тип переменной&amp;gt;.&lt;br&gt;В нашем случае:&lt;br&gt;&#037; - спец символ&lt;br&gt;&amp;lt;кол-во символов&amp;gt; == $&#123;#tshift&#125; (это величина, она же длина, сдвига вправо)&lt;br&gt;s - выводить будем строковое значение&lt;br&gt;&lt;br&gt;То есть при $&#123;#tshift&#125; == 80 получим:&lt;br&gt;printf &quot;&#037;80s&quot; &quot;Foo&quot; - вывести текст Foo со сдвигом вправо на 80 символов.&lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (Andrey Mitrofanov)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#8</link>
    <pubDate>Fri, 25 Dec 2015 06:56:08 GMT</pubDate>
    <description>&amp;gt; Я хотя и не понял выражение&lt;br&gt;&amp;gt; printf &quot;&#037;$&#123;tshift&#125;s&#092;n&quot; &quot;$text&quot; &lt;br&gt;&amp;gt; у меня заработал.&lt;br&gt;&amp;gt; А этот пример &lt;br&gt;&lt;br&gt;&#091;CODE&#093;#!/bin/bash&#091;/CODE&#093;&lt;br&gt;&lt;br&gt;Не пропустил? И _в исполняемый файл_ положил?  И да, допускаю, что могда не подойти даже версия баша. Впрочем, у меня работает, и ладно.&lt;br&gt;&lt;br&gt;&amp;gt; func_ShowHead() &#123; &lt;br&gt;&amp;gt; я так и не смог выполнить. Показывает ошибку синтаксиса - преждевременное окончание &lt;br&gt;&amp;gt; файла. Трудно править синтаксис когда не вижу малейшего смысла в символах. &lt;br&gt;&lt;br&gt;Ну, и ладненько. Лобиться, чтоб они ещё и &#037;) исполнялись -- и можно основывать Культ Баша.&lt;br&gt;&lt;br&gt;&amp;gt; Надеюсь, со временем я смогу понять что все это значить &lt;br&gt;&lt;br&gt;Только если будешь этим (шелом, не пониманием, да) заниматься профессионально, фулЬ-тайм.&lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (klok79)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#7</link>
    <pubDate>Thu, 24 Dec 2015 19:30:04 GMT</pubDate>
    <description>Спасибо всем огромное за ответы с примерами.&lt;br&gt;Я хотя и не понял выражение  (printf &quot;&#037;$&#123;tshift&#125;s&#092;n&quot;), но последний пример:&lt;br&gt;cols=80&lt;br&gt;text=&quot;This is a test text&quot;&lt;br&gt;tcenter=$(($cols/2))&lt;br&gt;tshift=$(($tcenter+$&#123;#text&#125;/2))&lt;br&gt;printf &quot;&#037;$&#123;tshift&#125;s&#092;n&quot; &quot;$text&quot;&lt;br&gt;у меня заработал.&lt;br&gt;А этот пример &lt;br&gt;func_ShowHead() &#123;&lt;br&gt;    local xS&lt;br&gt;    let &quot;xS=(80-$&#123;#1&#125;)/2&quot;  &quot;$&#123;#1&#125;==0 &amp;#124;&amp;#124; xS&amp;lt;0&quot; &#092;&lt;br&gt;        &amp;&amp; xS=0&lt;br&gt;    printf &apos;&#037;*s&#037;s&#092;n&apos; $xS &apos;&apos; &quot;$1&quot;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;for i in 0 &#096;seq 8 9 89&#096;; do&lt;br&gt;    &#091; $i = 0 &#093; &amp;&amp;  str= &amp;#124;&amp;#124;  str=&quot;$(printf &apos;&amp;lt;&#037;*s&amp;gt;&apos; $i &apos;&apos; &amp;#124;tr &#092;  -)&quot;&lt;br&gt;    echo &quot;$i +$(func_ShowHead &quot;$str&quot;)+&quot;&lt;br&gt;done&lt;br&gt;я так и не смог выполнить. Показывает ошибку синтаксиса - преждевременное окончание файла. Трудно править синтаксис когда не вижу малейшего смысла в символах.&lt;br&gt;Надеюсь, со временем я смогу понять что все это значить&lt;br&gt;&lt;br&gt;Еще раз СПАСИБО всем откликнувшимся на мой SOS. Тему можна считать закрытой.&lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (erera22)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#6</link>
    <pubDate>Thu, 24 Dec 2015 13:33:05 GMT</pubDate>
    <description>Все гораздо проще.&lt;br&gt;&lt;br&gt;Чтобы вывести текст в центре строки, надо:&lt;br&gt;1. найти всю длину строки ($cols);&lt;br&gt;2. поделить длину всей стройки на 2, чтобы узнать центр ($tcenter);&lt;br&gt;3. прибавить к $tcenter половину длины строки с текстом ($text)&lt;br&gt;&lt;br&gt;# full line length&lt;br&gt;cols=$(tput cols)&lt;br&gt;# my text&lt;br&gt;text=&quot;This is a test text&quot;&lt;br&gt;&lt;br&gt;# calculating center of line&lt;br&gt;tcenter=$(($cols/2))&lt;br&gt;# calculating shift using $tcenter and halt of text length&lt;br&gt;tshift=$(($tcenter+$&#123;#text&#125;/2))&lt;br&gt;&lt;br&gt;# making output&lt;br&gt;printf &quot;&#037;$&#123;tshift&#125;s&#092;n&quot; &quot;$text&quot;&lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (klok79)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#5</link>
    <pubDate>Wed, 23 Dec 2015 07:22:28 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;     local xS &lt;br&gt;&amp;gt;     let &quot;xS=(80-$&#123;#1&#125;)/2&quot;  &quot;$&#123;#1&#125;==0 &amp;#124;&amp;#124; xS&amp;lt;0&quot; &#092; &lt;br&gt;&amp;gt;         &amp;&amp; xS=0 &lt;br&gt;&amp;gt;     printf &apos;&#037;*s&#037;s&#092;n&apos; $xS &apos;&apos; &quot;$1&quot; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; for i in 0 &#096;seq 8 9 89&#096;; do &lt;br&gt;&amp;gt;     &#091; $i = 0 &#093; &amp;&amp;  str= &lt;br&gt;&amp;gt; &amp;#124;&amp;#124;  str=&quot;$(printf &apos;&amp;lt;&#037;*s&amp;gt;&apos; $i &apos;&apos; &amp;#124;tr &#092;  -)&quot; &lt;br&gt;&amp;gt;     echo &quot;$i +$(func_ShowHead &quot;$str&quot;)+&quot; &lt;br&gt;&amp;gt; done&#091;/CODE&#093; &lt;br&gt;&lt;br&gt;Мне это пока слишком для понимания. Но выглядит классно. Спасибо. Буду разбираться. Вечером отпишусь. &lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (Andrey Mitrofanov)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#4</link>
    <pubDate>Wed, 23 Dec 2015 06:55:05 GMT</pubDate>
    <description>&amp;gt; Может кто знает более элегантное решение ???&lt;br&gt;&amp;gt; Пишу на Федоре 6 для linux 2.6.6 &lt;br&gt;&amp;gt; Спасибо &lt;br&gt;&lt;br&gt;Ну, на.  Пишу на баше...&lt;br&gt;&lt;br&gt;&#091;CODE&#093;#!/bin/bash&lt;br&gt;&lt;br&gt;func_ShowHead() &#123;&lt;br&gt;    local xS&lt;br&gt;    let &quot;xS=(80-$&#123;#1&#125;)/2&quot;  &quot;$&#123;#1&#125;==0 &amp;#124;&amp;#124; xS&amp;lt;0&quot; &#092;&lt;br&gt;        &amp;&amp; xS=0&lt;br&gt;    printf &apos;&#037;*s&#037;s&#092;n&apos; $xS &apos;&apos; &quot;$1&quot;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;for i in 0 &#096;seq 8 9 89&#096;; do&lt;br&gt;    &#091; $i = 0 &#093; &amp;&amp;  str= &amp;#124;&amp;#124;  str=&quot;$(printf &apos;&amp;lt;&#037;*s&amp;gt;&apos; $i &apos;&apos; &amp;#124;tr &#092;  -)&quot;&lt;br&gt;    echo &quot;$i +$(func_ShowHead &quot;$str&quot;)+&quot;&lt;br&gt;done&#091;/CODE&#093;&lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (klok79)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#3</link>
    <pubDate>Wed, 23 Dec 2015 06:50:31 GMT</pubDate>
    <description>&amp;gt; Пробелы нужно экранировать вот так &apos;&#092; &apos; &lt;br&gt;&lt;br&gt;Да пробовал я экранировать - строка создается из обратных слэшэв и пробелов. Может какой символ пропускал, может двойными кавычками, не знаю. Вечером попробую. Спасибо.&lt;br&gt;Тема еще не закрыта.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (Имя)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#2</link>
    <pubDate>Wed, 23 Dec 2015 06:48:43 GMT</pubDate>
    <description>space=&apos;                  word&apos;;&lt;br&gt;Сравните:&lt;br&gt;1) echo $space&lt;br&gt;word&lt;br&gt;2) echo &quot;$space&quot;&lt;br&gt;                  word&lt;br&gt;&lt;br&gt;POSIX, Word Expansions.&lt;br&gt;If the complete expansion appropriate for a word results in an empty field, that empty field shall be deleted from the list of fields that form the completely expanded command, unless the original word contained single-quote or double-quote characters.&lt;br&gt;</description>
</item>

<item>
    <title>Не получается создать переменную, из одних пробелов (кегна)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/10062.html#1</link>
    <pubDate>Tue, 22 Dec 2015 20:32:40 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;   # Вывожу не корректный результат &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; Вызов функции: func_ShowHead &quot;Произвольный текст.&quot; &lt;br&gt;&amp;gt; Пробовал заполнять строку символами, а потом заменять и на пробелы функцией tr &lt;br&gt;&amp;gt; - тоже не работает.&lt;br&gt;&amp;gt; Даже не знаю, как обмануть интерпретатор. Он, видимо считает пробел ложью и &lt;br&gt;&amp;gt; замещает его на null.&lt;br&gt;&amp;gt; Может кто знает более элегантное решение ???&lt;br&gt;&amp;gt; Пишу на Федоре 6 для linux 2.6.6 &lt;br&gt;&amp;gt; Спасибо &lt;br&gt;&lt;br&gt;Пробелы нужно экранировать вот так &apos;&#092; &apos;&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
