Para solicitar valores do usuário durante a execução do script, é usada a instrução read:
echo " I n fo rme v a l o r s o l i c i ta do : " read RESPOSTA
O valor retornado será armazenado na variável RESPOSTA. Caso uma variável de retorno não seja especificada, o nome padrão da variável de retorno, REPL Y,
será utilizado.
if then else
A estrutura lógica i f executa um comando ou uma lista de comandos se uma afirma ção for verdadeira. A instrução test avalia se a afirmação é verdadeira ou falsa. Seu uso é geralmente associado à instrução condicional if, como no exemplo abaixo, que exibe o k se o arquivo / b i n / ba s h for executável:
O exemplo abaixo mostra outra maneira de realizar a mesma tarefa:
A instrução e 1 s e é um apêndice à estrutura i f e determina o bloco de instruções a executar, caso a afirmação avaliada seja falsa. Exemplo:
O final da estrutura i f deve ser sempre sinalizado com f i .
Opções de avaliação da instrução test para arquivos e diretórios:
• - d cami n h o : verdadeiro se o caminho existir e for um diretório; • - c cami n h o : verdadeiro se o caminho existir;
i f test - x / b i n / b a s h ; then echo " o k " fi i f [ - x / b i n / b a s h J ; then echo "ok" f i i f [ - x / b i n / b a s h J ; then echo "ok" e l s e fi
• - f cami n h o : verdadeiro se o caminho existir e for um arquivo comum;
• - L cami n h o : verdadeiro se o caminho existir e for um link simbólico;
• - r cami n h o : verdadeiro se o caminho existir e puder ser lido (acessado);
• - s cami n h o : verdadeiro se o caminho existir e seu tamanho for maior que zero;
• - w cami n h o : verdadeiro se o caminho existir e puder ser escrito;
• - x cami n h o : verdadeiro se o caminho existir e for executável;
• cami n h o l - ot cami nho2: verdadeiro se cami nhol for diferente de cami nho2.
Opções de aval iação de test para texto
• - n texto: verdadeiro se o tamanho de texto for diferente de zero; • - z texto: verdadeiro se o tamanho de texto for zero;
• texto! - texto2: verdadeiro se texto! for igual a texto2;
• texto! ! - texto2: verdadeiro se texto! for diferente de texto2.
Opções de ava liação de test pa ra n ú meros
• n uml - 1 t n um2: verdadeiro se n uml for menor que n um2;
• n uml • n uml • n uml • n uml • n uml - gt - l e - ge - eq - ne
n um2: verdadeiro se n uml for maior que n um2; n um2: verdadeiro se n uml for menor ou igual a n um2; n um2: verdadeiro se n uml for maior ou igual a n um2; n um2: verdadeiro se n uml for igual a n um2;
n um2: verdadeiro se n uml for diferente de n um2.
Uma variação da instrução i f é a instrução case. A instrução case prosseguirá se um item indicado for encontrado em uma lista de itens divididos pelo caractere " I ":
O final da estrutura case deve ser sempre sinalizado com e s a c .
Substituição de comandos
Um dos principais propósitos de um script é trabalhar com os dados produzidos por outros comandos, sejam dados binários ou dados de texto. Para exibir ou armazenar a saída de um comando, o mesmo é colocado entre aspas simples invertidas ' ou entre $ ( ) :
c a s e 3 i n ( l j 2 j 3 j 4 j 5 )
e s a c
echo " N úmero 3 e n c o n t r a d o n a l i s ta , " ; echo "portanto c a s e fi na l i zo u e " ; echo "executou e s s e s coma ndos " ;
Resultado idêntico será produzido na forma:
Operações matemáticas com números inteiros são feitas utilizando a instrução expr:
Produz resultado idêntico:
Instruções de laço
É bastante comum o desenvolvimento de scripts cuja finalidade é executar determi nada tarefa repetidamente, obedecendo a uma condição pré-determinada. Para esse fim existem as chamadas instruções de laço ou loop.
for
A instrução fo r executa uma ou mais ações para cada elemento de uma lista. Neste caso, cada número gerado pelo comando seq:
A saída desse script será:
TRESL I N HAS=$( ca t - n3 /etc/i n putrc)
echo "As três p r i me ir a s l i n h a s de /etc / inputrc: " echo $ T R E S L INHAS
T R E S L INHAS= 'c a t - n 3 /etc / in p ut r c '
e c h o " A s t rês p r i me ir a s l i n h a s de /etc / inputrc: " echo $TRESL INHAS
SOMA= 'expr $VALOR1 + $VALOR2'
SOMA=$( ( $VALOR1 + $VALOR2) )
for i in $ ( seq 5 ) ; do
echo "Ba i xando foto_$ i . j p g " ;
echo wget http : / /www . s omedoma i n . com/foto_$ i . j pg ; dane
B a ixando foto_l
wget http: / /www . s omedomai n . com/foto_l. j pg B a ixando foto_2
u ntil
A instrução unti l executa um ação em loop até que uma afirmação seja verdadeira como, por exemplo, adicionar uma linha ao arquivo texto_s i mp l es . txt até que este alcance 1 O linhas:
while
A instrução w h i l e é semelhante à instrução until, mas executa uma ação até que uma afirmação não seja mais verdadeira. Por exemplo, adicionar uma linha ao arquivo
texto_s i mp l es . txt até que este alcance 20 linhas (ou, em outras palavras, enquanto o documento for inferior a vinte linhas) :
local, propriedade e pennissão
Para que um script possa ser usado por todos os usuários, é importante que ele seja executável e que esteja num diretório incluído na variável PATH. Direito de escrita deve ser retirado para todos, exceto o dono (normalmente o root). Por ser um arqui vo mais vulnerável, não é recomendável ativar o bit SUID para arquivos script, pois mesmo se outro usuário o executasse, toda instrução contida nele seria executada com permissão de root.
'+
B a ixando foto_3
wget http: / /www . s omedoma in . com/foto_3. j pg B a ixando foto_4
wget http: / /www . s omedoma in . com/foto_4. j pg B a ixando foto_5
wget http: / /www. s omedoma in . com/foto_5. j pg
LENTE XTO=$ ( wc - 1 texto_s i mpl e s )
done
u n t i l [ $ { LENTEXTO%% *} - eq 1 0 ] ; do echo "Ma i s uma l i n h a " » texto_s i mp l es . txt LENTEXTO=$ ( wc - 1 texto_s i mp l es . txt )
LENTE XTO=$ ( wc - 1 texto_s i mpl e s )
done
w h i l e [ $ { LENTEXTO%% *} - l t 20 ] ; do echo " E dH he l i n h a " » texto_s i mpl es . txt LENTEXTO=$ ( wc -1 texto_s i mp l es . txt )
Peso 2
A linguagem SQL -Structured Quny Language, ou Linguagem de Consulta Estruturada - é o padrão para realização de consulta, edição e inclusão de dados nas tecnologias de bancos de dados mais utilizadas do mundo. Como um idioma comum entre as diferentes soluções de armazenamento de dados em larga escala, a linguagem SQL torna possível a um administrador realizar todas as operações fundamentais em um banco de dados mes mo que não tenha conhecimento pleno sobre a tecnologia específica empregada.
lnteragindo com os dados
A maneira mais básica de comunicação com um banco de dados é feita por meio de linha de comando. Semelhante ao prompt do bash, os bancos de dados mais popula res oferecem um prompt no qual é possível interagir com o banco de dados instalado.
Cada tecnologia de banco de dados possui sua própria ferramenta de interação manual. Para o banco de dados MySQL, existe o comando my sq l . Para o banco de dados Postgresql, o comando é o p s q l .
Bancos de dados são organizados em tabelas semelhantes às tabelas de uma pla nilha. Cada tabela possui colunas que recebem nomes e definição de tipo de dado. Os dados estão organizados como linhas na tabela, podendo ser incluídos, alterados ou removidos. Na maioria das tabelas, a primeira coluna corresponde a um campo de identificação único, criado automaticamente, usado para identificar uma linha específica da tabela.
Inserção de dados
O comando SQL para inserção de dados é o INSERT. Numa tabela chamada cliente
onde existem as colunas id (campo de identificação único), nome, email e telefone, a inserção de uma nova linha com todos os campos pode ser feita da maneira: