Baixe o app para aproveitar ainda mais
Prévia do material em texto
23/09/2014 1 CCT0042 Programação para Servidores Programação Script - 02 Adaptado do Prof. Paulo Estevam Prof. Márcio Rodrigo Semestre Letivo: 2014.1 pág. $(comando) Os caracteres “$( )” intrui ao shell, substitui-los pelo resultado do(s) comando(s) entre parêntesis. Sintaxe: $(comandos) ou `comandos` Exemplo: echo $(date +“%x %r”) � A sintaxe alternativa para “$(comando)” é `comando` A expressão `comando`, que usa o caracter crase “`”, é uma forma mais antiga, oriunda do Bourne shell original (sh). 3 23/09/2014 2 pág. Observações: 1. 2. 3. O Bash shell suporta totalmente scripts escritos para sh. A substituição de comandos também é conhecida como “expansão”. É possível atribuir os resultados de comandos para uma variável. 4 pág. Exemplo: 5 23/09/2014 3 pág. Resultado: 6 pág. � Também é possível aninhar/concatenar substituições de variáveis e de comandos, colocando-os juntos entre aspas. Exemplo: SAÍDA 7 23/09/2014 4 pág. Existem dois comandos para saída de dados: � � echo printf E um para leitura de dados: � read 8 pág. echo � Usado para exibir mensagens e/ou conteúdo de variáveis. � Sintaxe: echo [ cadeia_caracteres $variavel $(comandos) ] Exemplos: echo Olá mundo echo “Olá mundo” echo ‘Olá mundo’ echo Diretório do usuário: $HOME echo “Diretório do usuário: $HOME” 9 echo ‘Diretório do usuário: $HOME’ Neste último caso, o caractere especial apóstrofo protege a interpretação do caractere $ como sendo de expansão de variável ou de comando 23/09/2014 5 pág. echo Observações: 1. 2. A opção “-n” omite uma nova linha de prompt. Porém não é padrão POSIX. A opção “-e” habilita a interpretação de sequências de escape (\), como, por exemplo, de mudança de linha. 10 pág. Exemplo: 11 23/09/2014 6 pág. Resultado: 12 CARACTERES SIGNIFICADO \n Mudadelinha. \c Omite uma nova linha de prompt. \t Tabulação horizontal. \v Tabulação vertical. \\ Exibe o caracter \. \b Backspace. pág. echo � Sequências de escape Obs.: Usar com a opção “-e” para habilitar a interpretação da barra invertida. Ex.: echo -e “Exemplo mudando \n de linha” 13 23/09/2014 7 pág. printf � Usado para exibir mensagens e/ou conteúdo de variáveis. Teve sua origem na linguagem C. � � Usa-se com caracteres especificadores de formato e com caracteres de escape. Sintaxe: printf [ “literal_e_caracteres_espec_formato_e_escape” argumentos ] Exemplo: printf “Olá mundo” printf ‘Olá mundo’ printf “Diretório do usuário: %s \n” $HOME Neste último, para quebra de linha, usou- se “\ n” (caracteres de escape ) 14 FORMATO SIGNIFICADO %c Mostra um caracter. %s Mostra uma string (literal). %dou%i Mostra um número inteiro. %f Mostra um número real. %x.yf Mostra um número real Com x casas inteira se y Casas depois da vígula. %% Mostraocaracter%. pág. printf � Especificadores de formato Observação.: Pesquisar sobre o uso de flags em printf. (cap. 7, págs. 160-161) 15 23/09/2014 8 pág. Exemplo: 16 pág. Resultado: 17 23/09/2014 9 pág. Exemplo: 18 pág. Resultado: 19 23/09/2014 10 CARACTERES SIGNIFICADO \n Muda de linha. \c Omite uma nova linha de prompt. \t Tabulação horizontal. \v Tabulação vertical. \\ Exibe o caracter\. \b Backspace. pág. printf � Sequências de escape Obs.: A opção \c é equivalente à sequência de escape “-n” no comando echo. Ex.: printf “Digite o nome do arquivo: ” \c ; read ARQUIVO 20 pág. Exemplo: 21 23/09/2014 11 pág. Resultado: 22 pág. Exemplo: 23 23/09/2014 12 pág. Resultado: 24 pág. Exemplo: 25 23/09/2014 13 pág. Resultado: 26 pág. Exemplo: 27 23/09/2014 14 pág. Resultado: 28 pág. Exemplo: 29 23/09/2014 15 pág. Resultado: 30 pág. read � O comando read é um comando de interação do script com o usuário, ou seja, ele realiza a leitura de dados a partir da entrada padrão (teclado). � Se não for especificada uma variável, o valor digitado pelo usuário é armazenado na variável padrão REPLY. Para se extrair o valor digitado pelo usuário, usar o caractere de substituição ($). Exemplo: echo –n “Digite o nome do arquivo: ”;read echo O nome do arquivo informando: $REPLY 31 23/09/2014 16 pág. Exemplo: 32 pág. Resultado: 33 23/09/2014 17 pág. Exemplo: 34 pág. Resultado: 35 23/09/2014 18 pág. ATENÇÃO! Ambas as formas agrupam o texto como uma única string. PORÉM: � Aspas duplas (“...”) O shell processa interpreta caracteres de escape, substituição de variáveis, expansão de comandos, etc. Exemplo: x=“Tudo bem?” echo “Ola mundo! $x” � Apóstrofos ('...') Força ao shell tratar literalmente tudo que estiver entre o par de apóstrofos, ou seja, não substitui variáveis, nem expande comandos, etc. Exemplo: x='Tudo bem? ' echo 'Ola mundo $x' 36 pág. exit � O comando exit força a saída (término) de um script. Exemplo: 37 23/09/2014 19 pág. $? A variável especial ? guarda o valor de retorno do “status de saída” da execução do último comando ou do último script executado. Observações: o Todo comando ou script realizado com sucesso retorna o valor zero (0). o Em um script shell podemos modificar o valor do estado de saída através do comando de término exit. A expressão “exit nº” retorna o valor do número como estado de saída do script. Exemplo: exit 9 � finalizará com estado de saída 9 38 VARIÁVEL SIGNIFICADO $? Valor de retorno do último comando Ou do último script executado. $$ Númerodo PID (ProcessID) $- Opções dada ao shell na invocação De um comando. pág. � Obs.: Na página de manual do bash (“man bash”), na seção “Shell Variables”, você visualizará outras variáveis especiais. 39 23/09/2014 20 OPERADOR OPERAÇÃO EXEMPLO OBSERVAÇÃO + Adição X+Y Soma o conteúdo deX e de Y - Subtração X-Y Subtrai Ydo conteú do de X * Multiplicação X*Y Multiplicao conteú do de X pelo De Y / Divisão X/Y Obtém o quociente da divisão De X por Y % Restodeuma divisão X%Y Obtém o resto da divisão de X Por Y ** Potenciação X**Y Obtém a potência de X elevado aY pág. � São semelhantes aos da Linguagem C. 40 OPERADOR OPERAÇÃO EXEMPLO OBSERVAÇÃO ++ Incremento X++ou ++X Aumenta oconteú do de Xem Um aunidade -- Decremento X--ou --X DiminuioconteúdodeXem umaunidade +=,-=,*=,/= Operadores de Atribuição aritméticos X+=Y, X-=Y, X*=Y, X/=Y Soma o conteúdo anterior de X comY e armazena em X.O Mesmo queX=X+Y pág. � (continuação) 41 23/09/2014 21 pág. � � $((expressão_aritmética)) Os carateres $(( )) funcionam como delimitadores de expressões aritméticas, permitindo a expansão dos cálculos realizados dentro do duplo parêntesis. Exemplos: echo $((2+3)) n1=10 n2=5 echo $(( (n1*n2) + (n1-n2) )) echo $(( ($n1*$n2) + ($n1-$n2) )) Obs.: Note que não foi preciso expandir as variáveis acima. 42 pág. let � Para avaliar e realizar uma expressão aritmética pode- se utilizar também o comando let. Exemplos: x=1 let x=x*2+3 echo “x=$x” let x-- echo “x=$x” Obs.: Pesquise sobre o comando expr, porém o mesmo está obsoleto. 43 23/09/2014 22 pág. � � O uso de $(( )) ou do comandos let e expr só permitem operações do tipo inteiro. Para efetuar cálculos numéricos com floats (números de ponto flutuante) existem 2 alternativas: “bc”� Opção 1: Usar o programa (arbitary precision calculator language) Sintaxe: echo“expressão” | bc -l ou echo “scale=nºcasas_decimais;expressão” | bc y=2.2 x=2.7 echo “$x/$y” | bc –l (-l=com todas as casa decimais) 1.22727272727272727272 (ou com a função scale=nºcasas;) echo “scale=4;$x/$y” | bc 1.2272 44 pág. � Guardando o valor numa variável: z=$(echo “scale=4; 5/2” | bc) echo $z 2.50 � Guardando o valor num arquivo, em seguida lendo para uma variável: echo “scale=2; 5/2” | bc > resultado.txt read < resultado.txt echo $REPLY 2.50 45 23/09/2014 23 pág. � Potenciação (^) echo “scale=4; 2^3” | bc 8 � Raiz quadrada ( sqrt( ) ) echo “scale=4; sqrt(2)” | bc 1.4142 46 pág. � Opção 2: Usar o programa “awk” x=2.2 y=3.3 echo $x $y | awk ‘{print $1+$2}’ 47 23/09/2014 24 pág. 48 pág. 49 23/09/2014 25 Binário Octal Significado Leitura (r) Escrita (w) Execução (x) 0 0 0 0 Sempermissãoalguma(acessonegado) 0 0 1 1 Permissãodeexecução 0 1 0 2 Permissãodegravação 0 1 1 3 Permissãodegravaçãoeexecução 1 0 0 4 Permissãodeleitura 1 0 1 5 Permissãodeleituraeexecução 1 1 0 6 Permissãodeleituraegravação 1 1 1 7 Controletotal(somadetodasas permissões) pág. 50 pág. 51 23/09/2014 26 pág. 52
Compartilhar