<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии: bash-&gt;установка бита владельца директории из списка</title>
	<atom:link href="http://www.bagrincev.ru/bash-set-uids-from-list/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bagrincev.ru/bash-set-uids-from-list/</link>
	<description>Уютный бложик девелопера.</description>
	<lastBuildDate>Fri, 25 Nov 2011 07:11:47 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>Автор: Millicent</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1792</link>
		<dc:creator>Millicent</dc:creator>
		<pubDate>Fri, 25 Nov 2011 06:08:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1792</guid>
		<description>My hat is off to your astute cmomnad over this topic-bravo!</description>
		<content:encoded><![CDATA[<p>My hat is off to your astute cmomnad over this topic-bravo!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Amberly</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1783</link>
		<dc:creator>Amberly</dc:creator>
		<pubDate>Fri, 25 Nov 2011 03:54:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1783</guid>
		<description>TYVM you&#039;ve solevd all my problems</description>
		<content:encoded><![CDATA[<p>TYVM you&#8217;ve solevd all my problems</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: vjaxghy</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1776</link>
		<dc:creator>vjaxghy</dc:creator>
		<pubDate>Thu, 24 Nov 2011 15:48:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1776</guid>
		<description>f0gA91 , [url=http://cnadyzqkhgfe.com/]cnadyzqkhgfe[/url], [link=http://mglosjnvvpfb.com/]mglosjnvvpfb[/link], http://hbzqecilmrpy.com/</description>
		<content:encoded><![CDATA[<p>f0gA91 , [url=http://cnadyzqkhgfe.com/]cnadyzqkhgfe[/url], [link=http://mglosjnvvpfb.com/]mglosjnvvpfb[/link], <a href="http://hbzqecilmrpy.com/" rel="nofollow">http://hbzqecilmrpy.com/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: pbihxuj</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1767</link>
		<dc:creator>pbihxuj</dc:creator>
		<pubDate>Thu, 24 Nov 2011 08:26:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1767</guid>
		<description>mx5Wfl  &lt;a href=&quot;http://snyfpgelbfsn.com/&quot; rel=&quot;nofollow&quot;&gt;snyfpgelbfsn&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>mx5Wfl  <a href="http://snyfpgelbfsn.com/" rel="nofollow">snyfpgelbfsn</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Dahrann</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1757</link>
		<dc:creator>Dahrann</dc:creator>
		<pubDate>Wed, 23 Nov 2011 03:31:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1757</guid>
		<description>I really appreciate free, succinct, relilabe data like this.</description>
		<content:encoded><![CDATA[<p>I really appreciate free, succinct, relilabe data like this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Etty</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1755</link>
		<dc:creator>Etty</dc:creator>
		<pubDate>Tue, 22 Nov 2011 22:36:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1755</guid>
		<description>You got to push it-this eessntial info that is!</description>
		<content:encoded><![CDATA[<p>You got to push it-this eessntial info that is!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Brandice</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1754</link>
		<dc:creator>Brandice</dc:creator>
		<pubDate>Tue, 22 Nov 2011 22:19:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1754</guid>
		<description>Wow! That&#039;s a really neat asnwer!</description>
		<content:encoded><![CDATA[<p>Wow! That&#8217;s a really neat asnwer!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Sb0y</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1723</link>
		<dc:creator>Sb0y</dc:creator>
		<pubDate>Fri, 30 Jul 2010 13:25:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1723</guid>
		<description>Спасибо огромное за подробные разъяснения, исправил скрипт.
Не знал про waitpid...</description>
		<content:encoded><![CDATA[<p>Спасибо огромное за подробные разъяснения, исправил скрипт.<br />
Не знал про waitpid&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Konstantin Khomoutov</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1722</link>
		<dc:creator>Konstantin Khomoutov</dc:creator>
		<pubDate>Thu, 29 Jul 2010 19:01:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1722</guid>
		<description>&lt;blockquote cite=&quot;#comment-content-1721&quot;&gt;
&lt;a href=&quot;#comment-1721&quot; rel=&quot;nofollow&quot;&gt;Sb0y&lt;/a&gt; :
    &gt;Также круглые скобки после if непонятны
Обычное правило хорошего тона – разделение процессов между собой )
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.
&lt;/blockquote&gt;

Вы что-то путаете. С этим кодом есть две проблемы (вторую я при первом просмотре не увидел).

Первая: выгрузка вычислений или других операций в другой процесс нужна только для того, чтобы освободить исходный процесс для *параллельного* решения другой задачи. У Вас же создаётся сабшелл, он исполняет скрипт &quot;chgrp -R $group $dir&quot; (точнее, вместо указанных переменных в скрипт будут подставлены их значения перед передачей), а исходный процесс в это время тупо спит в вызове waitpid() чтобы дождаться завершения порождённого процесса.
То есть Вы просто ухудшили ситуацию на один лишний процесс (шелл).
Код
if chgrp -R $group $dir; then ...
делал бы то же самое, только без лишнего процесса.

Вторая проблема состоит в том, что Ваш код вообще делает не то, что вы предполагали, а именно:
1) Выполняется подстановка `chgrp -R $group $dir`. Сами по себе &quot;бэктики&quot; означают: &quot;выполнить скрипт между ними и вернуть то, что скрипт написал на stdout&quot;.
2) Поскольку chgrp никогда ничего на stdout не пишет, этот скрипт вернёт пустую строку.
3) Затем выполнится код &quot;()&quot;, т.к. в скобки будет поставлена пустая строка. Эта пустая строка будет скриптом, который выполняет сабшелл, организованный при помощи ().
Поскольку пустая строка -- вполне валидный скрипт, это выполняется молча и всегда успешно. Демонстрация:

#!/bin/sh

touch /tmp/xyzzy
if (`chmod 0644 /tmp/xyzzy`); then
    echo A
else
    echo B
fi

if (`chmod 0644 /tmp/xyzzy; echo HEY`); then
    echo A
else
    echo B
fi

и выполнение:

$ /bin/dash /tmp/foo.sh
A
/tmp/foo.sh: 14: HEY: not found
B

Короче, как я указал выше, на самом деле Вам следует использовать простое
if chgrp -R $group $dir; then ...</description>
		<content:encoded><![CDATA[<blockquote cite="#comment-content-1721"><p>
<a href="#comment-1721" rel="nofollow">Sb0y</a> :<br />
    &gt;Также круглые скобки после if непонятны<br />
Обычное правило хорошего тона – разделение процессов между собой )<br />
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.
</p></blockquote>
<p>Вы что-то путаете. С этим кодом есть две проблемы (вторую я при первом просмотре не увидел).</p>
<p>Первая: выгрузка вычислений или других операций в другой процесс нужна только для того, чтобы освободить исходный процесс для *параллельного* решения другой задачи. У Вас же создаётся сабшелл, он исполняет скрипт &laquo;chgrp -R $group $dir&raquo; (точнее, вместо указанных переменных в скрипт будут подставлены их значения перед передачей), а исходный процесс в это время тупо спит в вызове waitpid() чтобы дождаться завершения порождённого процесса.<br />
То есть Вы просто ухудшили ситуацию на один лишний процесс (шелл).<br />
Код<br />
if chgrp -R $group $dir; then &#8230;<br />
делал бы то же самое, только без лишнего процесса.</p>
<p>Вторая проблема состоит в том, что Ваш код вообще делает не то, что вы предполагали, а именно:<br />
1) Выполняется подстановка `chgrp -R $group $dir`. Сами по себе &laquo;бэктики&raquo; означают: &laquo;выполнить скрипт между ними и вернуть то, что скрипт написал на stdout&raquo;.<br />
2) Поскольку chgrp никогда ничего на stdout не пишет, этот скрипт вернёт пустую строку.<br />
3) Затем выполнится код &laquo;()&raquo;, т.к. в скобки будет поставлена пустая строка. Эта пустая строка будет скриптом, который выполняет сабшелл, организованный при помощи ().<br />
Поскольку пустая строка &#8212; вполне валидный скрипт, это выполняется молча и всегда успешно. Демонстрация:</p>
<p>#!/bin/sh</p>
<p>touch /tmp/xyzzy<br />
if (`chmod 0644 /tmp/xyzzy`); then<br />
    echo A<br />
else<br />
    echo B<br />
fi</p>
<p>if (`chmod 0644 /tmp/xyzzy; echo HEY`); then<br />
    echo A<br />
else<br />
    echo B<br />
fi</p>
<p>и выполнение:</p>
<p>$ /bin/dash /tmp/foo.sh<br />
A<br />
/tmp/foo.sh: 14: HEY: not found<br />
B</p>
<p>Короче, как я указал выше, на самом деле Вам следует использовать простое<br />
if chgrp -R $group $dir; then &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Sb0y</title>
		<link>http://www.bagrincev.ru/bash-set-uids-from-list/comment-page-1/#comment-1721</link>
		<dc:creator>Sb0y</dc:creator>
		<pubDate>Tue, 27 Jul 2010 19:18:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.bagrincev.ru/?p=976#comment-1721</guid>
		<description>&gt;Также круглые скобки после if непонятны

Обычное правило хорошего тона - разделение процессов между собой )
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.

&lt;pre lang=&quot;bash&quot;&gt;
$ while IFS=’=’ read A B; do echo «A: $A; B: $B»; done
foo=bar
A: foo; B: bar
quux=xyzzy
A: quux; B: xyzzy
^D
&lt;/pre&gt;

Спасибо за трюк, раньше так никогда не делал. Вообще задумка была реализовать explode() из PHP...</description>
		<content:encoded><![CDATA[<p>>Также круглые скобки после if непонятны</p>
<p>Обычное правило хорошего тона &#8211; разделение процессов между собой )<br />
Так обычно делают, когда пишут, например на C. Тяжёлые процессы чаще всего отдаются процессу-потомку, чтобы операционная система смогла выдержать необходимый баланс ресурсов.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #007800;">IFS</span>=’=’ <span style="color: #c20cb9; font-weight: bold;">read</span> A B; <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #7a0874; font-weight: bold;">echo</span> «A: <span style="color: #007800;">$A</span>; B: <span style="color: #007800;">$B</span>»; <span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #007800;">foo</span>=bar
A: foo; B: bar
<span style="color: #007800;">quux</span>=xyzzy
A: quux; B: xyzzy
^D</pre></div></div>

<p>Спасибо за трюк, раньше так никогда не делал. Вообще задумка была реализовать explode() из PHP&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
