<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: BASH: i=0 ; ((i++)) даёт код выхода &apos;шибка&apos;. Почему?</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/9666.html</link>
    <description>В BASH если переменная равна нулю, то операция инкремента имеет код выхода 1, т.е. ошибка. Если значение больше нуля, код возврата 0, т.е. успех.&lt;br&gt;&lt;br&gt;Зачем так сделано, как это обычно используется? Где конкретно описано, что именно искать в манах?&lt;br&gt;&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;bash&lt;br&gt;i=0 ; ((i++)) ; echo $?&lt;br&gt;i=3 ; ((i++)) ; echo $?&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Причём вот это даёт ноль на выходе:&lt;br&gt;&#091;code&#093;&lt;br&gt;i=0 ; ((i+=1)) ; echo $?&lt;br&gt;&#091;/code&#093;&lt;br&gt;</description>

<item>
    <title>BASH: i=0 ; ((i++)) даёт код выхода &apos;шибка&apos;. Почему? (pavlinux)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/9666.html#4</link>
    <pubDate>Tue, 23 Apr 2013 19:38:41 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Да и ваще, проверять сам факт работы операции, это предел паранои. :) &lt;br&gt;&amp;gt; Случай всякий может быть.&lt;br&gt;&amp;gt; N=5; while let N--; do echo &quot;#$N&quot;; done &lt;br&gt;&lt;br&gt;Я тебе не о том. А о проверке работы операторов +, - , *, /, &#037;, и т.д  &lt;br&gt;По теории - Проверку истиности парадигм одного языка, НЕЛЬЗЯ сделать средствами этого же языка.&lt;br&gt;&lt;br&gt;Например констукция:  if (if (if (if (if (a == 3)) == true) != false) == 0 ) != 1 ) - безполезна, &lt;br&gt;так как мы не можем проверить самый последний if    &lt;br&gt; &lt;br&gt;</description>
</item>

<item>
    <title>BASH: i=0 ; ((i++)) даёт код выхода &apos;шибка&apos;. Почему? (Andrey Mitrofanov)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/9666.html#3</link>
    <pubDate>Tue, 23 Apr 2013 12:28:38 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Если ты сравнишь пост-инкремент и +=1 _по_правилам_Си, то наверное, узнаешь, почему значение &lt;br&gt;&amp;gt;&amp;gt; на выходе разное.&lt;br&gt;&amp;gt; У операций ваще нет кодов и особо выхода, у них результат.&lt;br&gt;&lt;br&gt;Ты меня не путай! Раз есть рез-т, значит, оно закончилось. Раз закончилось, значит вышло.&lt;br&gt;&lt;br&gt;Выход есть!&lt;br&gt;&lt;br&gt;&amp;gt; Да и ваще, проверять сам факт работы операции, это предел паранои. :) &lt;br&gt;&lt;br&gt;Случай всякий может быть.&lt;br&gt;&lt;br&gt;N=5; while let N--; do echo &quot;#$N&quot;; done&lt;br&gt;&lt;br&gt;Оно же &quot;while((N--))&quot;. А также в if-ах, &amp;#124;&amp;#124; / &amp;&amp; конвейерах (или как их там //pipeline), ... и, наверное, везде, где можно использовать код выхода.&lt;br&gt;&lt;br&gt;++ну привык я так, к кальке в Eng.: exit code и всё тут.&lt;br&gt;--посмотрел man bash, &quot;exit status&quot;, &quot;return status&quot;, также &quot;status&quot;, &quot;non-zero status&quot;, местами &quot;return a status&quot;, &quot;return an &#123;error,exit&#125; status&quot;... сложности какие&lt;br&gt;</description>
</item>

<item>
    <title>BASH: i=0 ; ((i++)) даёт код выхода &apos;шибка&apos;. Почему? (pavlinux)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/9666.html#2</link>
    <pubDate>Tue, 23 Apr 2013 11:30:51 GMT</pubDate>
    <description>&amp;gt; Если ты сравнишь пост-инкремент и +=1 _по_правилам_Си, то наверное, узнаешь, почему значение &lt;br&gt;&amp;gt; на выходе разное.&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>BASH: i=0 ; ((i++)) даёт код выхода &apos;шибка&apos;. Почему? (Andrey Mitrofanov)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID9/9666.html#1</link>
    <pubDate>Mon, 22 Apr 2013 07:43:10 GMT</pubDate>
    <description>&amp;gt; В BASH если переменная равна нулю, то операция инкремента имеет код выхода &lt;br&gt;&amp;gt; 1, т.е. ошибка.&lt;br&gt;&lt;br&gt;&quot;Традиционно&quot;, _в_Си_ логичесикий false - это _ровно 0_, true - всё, что !=0.&lt;br&gt;Не менее традиционно, коды возврата в шелах юниксов (и -подобных): 0=OK, !=ошибка.&lt;br&gt;&lt;br&gt;Вооот. А теметь в шеле (второй случай) образоваваются Си-подобные выражения и логические значения (первый случай). Мозги вывихиваются, да.&lt;br&gt;&lt;br&gt;&amp;gt; Если значение больше нуля, код возврата 0, т.е. успех.&lt;br&gt;&lt;br&gt;Не &quot;больше&quot;, а &quot;не равно&quot;.&lt;br&gt;&lt;br&gt;&amp;gt; Зачем так сделано, как это обычно используется? Где конкретно описано, что именно &lt;br&gt;&amp;gt; искать в манах?&lt;br&gt;&lt;br&gt;Ну-у-у... Применять здравый (=Си-программерский) смысл к man bash до исправления вывиха мозга, наверное.&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;i=0 ; ((i++)) ; echo $?&lt;br&gt;&amp;gt; Причём вот это даёт ноль на выходе:&lt;br&gt;&amp;gt;i=0 ; ((i+=1)) &lt;br&gt;&lt;br&gt;Если ты сравнишь пост-инкремент и +=1 _по_правилам_Си, то наверное, узнаешь, почему значение на выходе разное.&lt;br&gt;</description>
</item>

</channel>
</rss>
