parte 2: Iniciando (launching) e matando (killing) processos
parte 3: Capturando saídas com Backtick, ` (crase)
parte 4: calculadora/comando bc
parte 5: Códigos de retorno (return codes)
Usar a saída de processos, seja para usar o código de retorno do processo, seja para definir ou colocar arquivos inteiros em variáveis, usar a saída deles é de imensa utilidade em Shell Scripting. É usar, de verdade, o sistema.
- Usando a crase (backtick)
Se colocarmos um comando entre crases,``, é a saída do comando que aparecerá. Ou seja, estamos substituindo o comando pela sua saída, parecido com o que o Shell faz ao substituir o valor da $variavel.Por exemplo, vamos usar a saída do 'ls':
---------
for arquivo in `ls`
do
echo "Arquivo: $arquivo"
done
---------
O uso das backtick vem de longo tempo. Há porém, maneiras mais modernas de fazer isso, como o uso de parêntesis.
$(comando flags argumentos)
Se há diferenças entre `` e $(), desconheço.
* Passando a saída dos comandos para variáveis
Se dá através da crase:
data=`date`
echo $data
Sabemos que $0 armazena o endereço completo do script na forma: /caminho/do/arquivo.log
Porém, usamos geralmente só o 'arquivo.log'. Para pegar so o nome do script, usamos o comado 'basename':
nome_do_script=`basename $0`
Caso queira descartar a extensao:
nome_do_script=`basename $0 .log`
- Usando a crase para fazer cálculos
É possível fazer cálculos com o comando 'expr'. Por exemplo:expr 2 + 2
Mas, há alguns detalhes. Teste:
expr 2 * 2
expr "2 * 2"
Você deve ter obtido um erro de sintaxe, já que esta expressão não é permitida, pois antes de ser o caractere que representa o produto, é um wildcard, ou seja, é interpretado antes pelo Shell do que pelo 'expr'. O correto seria:
expr 2 \* 2
Outro exemplo, agora usando a crase para armazenar dados:
x=1;
expr $x + 1
x=`expr $x + 1`
echo $x
x=`expr $x + 1`
echo $x
Para backticks aninhados, devemos escapar as backticks de dentro:
a=`b=\`expr 2 \* 2 \`; expr $b + 1 `
Aqui, fazemos b=2*2 e depois a=b+1
- Fazendo variáveis receberem arquivos
É sabido que praticamente tudo em Unix são arquivos, e que estes são, no geral, textos.Podemos então, fazer com que variáveis em nossos scripts armazenem o conteúdo de um arquivo de uma maneira bem simples:
variavel=`cat /caminho/pro/arquivo`
Ou
variavel=`</caminho/pro/arquivo`
Não é aconselhável carregar uma variável com arquivos de conteúdo muito grande ou que sejam binários.
Nenhum comentário:
Postar um comentário