<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Portal Open Source &#187; script</title>
	<atom:link href="http://www.portalopensource.com/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.portalopensource.com</link>
	<description>O seu Portal de notícias sobre tecnologia Open Source</description>
	<lastBuildDate>Fri, 04 Feb 2011 17:56:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>10 Dicas para escrever um Script Eficiente</title>
		<link>http://www.portalopensource.com/2009/02/03/10-dicas-para-escrever-um-script-eficiente/</link>
		<comments>http://www.portalopensource.com/2009/02/03/10-dicas-para-escrever-um-script-eficiente/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 04:24:48 +0000</pubDate>
		<dc:creator>Nuno Figueiredo</dc:creator>
				<category><![CDATA[Aplicações]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[linha de comando]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.portalopensource.com/?p=369</guid>
		<description><![CDATA[Bash é a linha de comando defeito de grande parte das distribuições linux e uma poderosa linguagem de scripting. Ficam aqui algumas sugestões para tornar os seus scripts mais eficientes. Evite caminhos completos para comandos de sistema. A bash já tem imensos comandos que podem ser utilizados sem a necessidade de utilizar comandos externos. Sempre [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://portalopensource.com/wp-content/uploads/2008/08/bashcommandprompt.gif"><img class="alignnone size-medium wp-image-135" title="bashcommandprompt" src="http://portalopensource.com/wp-content/uploads/2008/08/bashcommandprompt-300x163.gif" alt="" width="300" height="163" /></a>Bash é a linha de comando defeito de grande parte das distribuições linux e uma poderosa linguagem de scripting. Ficam aqui algumas sugestões para tornar os seus scripts mais eficientes.</p>
<ul>
<li>Evite caminhos completos para comandos de sistema.</li>
</ul>
<p>A bash já tem imensos comandos que podem ser utilizados sem a necessidade de utilizar comandos externos. Sempre que possivel utilize os mesmos de forma a não carregar o seu script.</p>
<p># Evite Isto<br />
/bin/echo &#8220;hello&#8221;</p>
<p>´# Utilize isto<br />
echo &#8220;hello&#8221;</p>
<ul>
<li>Evite comandos externos para o Integer Math</li>
</ul>
<p>A Bash tambem permite funções que podem ser utilizadas para o integer aritmético. Utilize apenas /usr/bin/bc se precisa de fazer um ponto fultuante aritmético. Os calculos básicos podem ser feitos com os seguintes builtins:</p>
<p>four=$(( 2 + 2 ))<br />
four=$[ 2 + 2 ]<br />
let four=&#8221;2 + 2&#8243;</p>
<ul>
<li>Evite utilizar o comando Cat</li>
</ul>
<p>Ferramentas como o Grep, Awk e o Sed aceitam ficheiros como argumentos. Isto raramente é necessário para utilizar /bin/cat. Sendo assim torna-se desnecessário:</p>
<p># Evite isto<br />
cat /etc/hosts | grep localhost</p>
<p>Uma maneira mais eficiente é utilizar a capacidade nativa do Grep  para ler ficheiros.</p>
<p><code>grep localhost /etc/hosts</code></p>
<ul>
<li>Evite fazer um pipe do Grep para o Awk</li>
</ul>
<p>Se está a utilizar o Awk poderá eliminar a necessidade de utilizar o Grep. Tente não fazer pipe do Grep para o Awk.</p>
<p># evite isto<br />
grep error /var/log/messages | awk &#8216;{ print $4 }&#8217;</p>
<p>Em vez disso utilize a capacidade nativa do Awk para fazer um parse ao texto e salve assim um comando.</p>
<p><code>awk '/error/ { print $4 }' /var/log/messages</code></p>
<ul>
<li>Evite Fazer um pipe do Sed para o Sed</li>
</ul>
<p>O Sed pode aceitar mais do que um comando em apenas uma execução. Evite então fazer pipes entre o sed.</p>
<p><code># Evite isto<br />
sed 's/hello/goodbye/g' filename | sed  's/monday/friday/g'</code></p>
<p>Em vez disso poderá utilizar o comando sed &#8211; e ou delimitar as expressões com uma semi-coluna (;)</p>
<p>sed -e &#8216;s/hello/goodbye/g&#8217; -e &#8216;s/monday/friday/g&#8217; filename<br />
sed -e  &#8216;s/hello/goodbye/g; s/monday/friday/g&#8217; filename</p>
<ul>
<li>Utilize Duplas chavetas para Compostos e Testes Regex</li>
</ul>
<p>O [ ou o teste de comandos integrados pode ser utilizado para testar expressões, mas o operador integrado [[ adiciona um match de expressões regulares e comandos.</p>
<ul>
<li>Utilize Funções para tarefas que se repetem</li>
</ul>
<p>Parta o seu script em partes e utilize funcões que repetem tarefas, as mesmas podem ser declaradas da seguinte forma:</p>
<p>function_name() {<br />
do_something<br />
return $?<br />
}</p>
<p>Faça com que as funções possam ser utilizadas em mais do que uma shell.</p>
<p>#!/bin/bash<br />
. /path/to/shared_functions</p>
<ul>
<li>Utilize arrays em vez de variáveis multiplas</li>
</ul>
<p>Os arrays são bastante poderosos, logo evite utilizar variáveis desnecessárias.</p>
<p># Evite isto<br />
color1='Blue'<br />
color2='Red'<br />
echo $color1<br />
echo $color2</p>
<p>Utilize um array para solucionar.</p>
<p>colors=('Blue' 'Red')<br />
echo ${colors[0]}<br />
echo ${colors[1]}</p>
<ul>
<li>Utilize o /bin/mktemp para criar ficheiros temporários</li>
</ul>
<p>Precisa de ficheiros temporários? Temos a solução</p>
<p>tempfile=$(/bin/mktemp)<br />
tempdir=$(/bin/mktemp -d)</p>
<ul>
<li>Utilize o /bin/egrep ou o /bin/sed para fazer uma comparação de  padrões</li>
</ul>
<p>Se acha que precisa de perl para fazer tudo verifique primeiro se o Sed ou o Egrep (grep -e) não lhe resolvem o problema.</p>
<p># grep for localhost or 127.0.0.1 in /etc/hosts<br />
egrep  &#8216;localhost|127\.0\.0\.1&#8242; /etc/hosts</p>
<p># print pattern localhost.* in  /etc/hosts<br />
sed -n &#8216;s/localhost.*/&amp;/p&#8217; /etc/hosts<img src="http://www.portalopensource.com/?ak_action=api_record_view&#038;id=369&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.portalopensource.com/2009/02/03/10-dicas-para-escrever-um-script-eficiente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 11/17 queries in 0.024 seconds using disk

Served from: www.portalopensource.com @ 2012-02-07 09:32:56 -->
