<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: теряется значение переменной</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8398.html</link>
    <description>Прошу помощи у знатоков шела.&lt;br&gt;При чтении со стандартного ввода все хорошо&lt;br&gt;скрипт&lt;br&gt;&lt;br&gt;  #!/bin/bash&lt;br&gt;  a=0&lt;br&gt;  while read b; do&lt;br&gt;    &#091; $a -lt $b &#093; &amp;&amp; a=$b&lt;br&gt;  done&lt;br&gt;  echo max: $a&lt;br&gt;&lt;br&gt;запускаем&lt;br&gt;i&#064;/home/i $ ./script &lt;br&gt;3&lt;br&gt;7&lt;br&gt;2&lt;br&gt;max: 7&lt;br&gt;&lt;br&gt;Но при трении с конвеера:&lt;br&gt;file:&lt;br&gt;3&lt;br&gt;7&lt;br&gt;2&lt;br&gt;&lt;br&gt;скрипт&lt;br&gt;&lt;br&gt;  #!/bin/bash&lt;br&gt;  a=0&lt;br&gt;  cat file &amp;#124; while read b; do&lt;br&gt;    &#091; $a -lt $b &#093; &amp;&amp; a=$b&lt;br&gt;    echo $a&lt;br&gt;  done&lt;br&gt;  echo max: $a&lt;br&gt;&lt;br&gt;запускаем&lt;br&gt;i&#064;/home/i $ ./script &lt;br&gt;3&lt;br&gt;7&lt;br&gt;7&lt;br&gt;max: 0&lt;br&gt;&lt;br&gt;Почему потерялось значение переменной &quot;a&quot; при выходе из цикла? Это глюк, или особенность,&lt;br&gt;которую я не понимаю?&lt;br&gt;</description>

<item>
    <title>теряется значение переменной (любитель)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8398.html#5</link>
    <pubDate>Sun, 16 Aug 2009 17:19:20 GMT</pubDate>
    <description>Всем спасибо за помощь.&lt;br&gt;Остановился на варианте передачи значения через стандартный вывод, &lt;br&gt;который мне показался наиболее простым&lt;br&gt;&lt;br&gt;getuid()&lt;br&gt;&#123;&lt;br&gt;  ldapsearch -LLL -s one -b &quot;ou=People,$SUFFIX&quot; uidNumber &amp;#124; grep uidNumber &amp;#124; &#123;&lt;br&gt;    maxuid=0&lt;br&gt;    while read s uid; do&lt;br&gt;      &#091; $uid -gt $maxuid &#093; &amp;&amp; maxuid=$uid&lt;br&gt;    done&lt;br&gt;    echo $((maxuid + 1))&lt;br&gt;  &#125;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>теряется значение переменной (const86)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8398.html#4</link>
    <pubDate>Sat, 15 Aug 2009 23:59:17 GMT</pubDate>
    <description>&amp;gt;  cat file &amp;#124; while read b; do &lt;br&gt;&lt;br&gt;Чтобы избежать работы в subshell: while read b; do ...; done &amp;lt; file&lt;br&gt;</description>
</item>

<item>
    <title>теряется значение переменной (const86)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8398.html#3</link>
    <pubDate>Sat, 15 Aug 2009 23:57:09 GMT</pubDate>
    <description>&amp;gt;Для того, чтобы прокинуть значение переменной &quot;наружу&quot;, сохрани её во временный файл, а потом прочитай оттуда. &lt;br&gt;&lt;br&gt;Бр-р-р... Можно вернуть через другой пайп: завернуть цикл в функцию, в которой сделать echo, и поймать снаружи через $(). Или поступить ещё хитрее: завернуть в функцию и заставить эту функцию сделать всю оставшуюся работу, но это может быть по-своему неудобно, смотря что за задача.&lt;br&gt;</description>
</item>

<item>
    <title>теряется значение переменной (любитель)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8398.html#2</link>
    <pubDate>Sat, 15 Aug 2009 19:23:27 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Почему потерялось значение переменной &quot;a&quot; при выходе из цикла? Это глюк, или &lt;br&gt;&amp;gt;&amp;gt;особенность, которую я не понимаю? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Это особенность, которую ты не понимаешь. При подобном вызове (через &lt;br&gt;&amp;gt;пайп) для while создаётся отдельный процесс и изменение переменных &lt;br&gt;&amp;gt;происходит внутри него. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Для того, чтобы прокинуть значение переменной &quot;наружу&quot;, сохрани её во &lt;br&gt;&amp;gt;временный файл, а потом прочитай оттуда. &lt;br&gt;&lt;br&gt;Спасибо, воспользуюсь подсказкой.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>теряется значение переменной (gaa)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8398.html#1</link>
    <pubDate>Sat, 15 Aug 2009 19:14:49 GMT</pubDate>
    <description>&amp;gt;Почему потерялось значение переменной &quot;a&quot; при выходе из цикла? Это глюк, или &lt;br&gt;&amp;gt;особенность, которую я не понимаю? &lt;br&gt;&lt;br&gt;Это особенность, которую ты не понимаешь. При подобном вызове (через&lt;br&gt;пайп) для while создаётся отдельный процесс и изменение переменных&lt;br&gt;происходит внутри него.&lt;br&gt;&lt;br&gt;Для того, чтобы прокинуть значение переменной &quot;наружу&quot;, сохрани её во&lt;br&gt;временный файл, а потом прочитай оттуда.&lt;br&gt;</description>
</item>

</channel>
</rss>
