Unix / Linux - Substituição de Shell
O que é substituição?
O shell executa a substituição quando encontra uma expressão que contém um ou mais caracteres especiais.
Exemplo
Aqui, o valor de impressão da variável é substituído por seu valor. Mesmo tempo,"\n" é substituído por uma nova linha -
#!/bin/sh
a=10
echo -e "Value of a is $a \n"
Você receberá o seguinte resultado. Aqui o-e opção permite a interpretação de escapes de barra invertida.
Value of a is 10
A seguir está o resultado sem -e opção -
Value of a is 10\n
As seguintes sequências de escape que podem ser usadas no comando echo -
Sr. Não. | Escape e descrição |
---|---|
1 | \\ barra invertida |
2 | \a alerta (BEL) |
3 | \b backspace |
4 | \c suprimir nova linha final |
5 | \f feed de formulário |
6 | \n nova linha |
7 | \r retorno de carruagem |
8 | \t aba horizontal |
9 | \v aba vertical |
Você pode usar o -E opção para desativar a interpretação dos escapes de barra invertida (padrão).
Você pode usar o -n opção para desativar a inserção de uma nova linha.
Substituição de Comando
A substituição de comando é o mecanismo pelo qual o shell executa um determinado conjunto de comandos e, em seguida, substitui sua saída no lugar dos comandos.
Sintaxe
A substituição do comando é realizada quando um comando é dado como -
`command`
Ao realizar a substituição do comando, certifique-se de usar aspas, não o caractere de aspas simples.
Exemplo
A substituição de comando geralmente é usada para atribuir a saída de um comando a uma variável. Cada um dos exemplos a seguir demonstra a substituição do comando -
#!/bin/sh
DATE=`date`
echo "Date is $DATE"
USERS=`who | wc -l`
echo "Logged in user are $USERS"
UP=`date ; uptime`
echo "Uptime is $UP"
Após a execução, você receberá o seguinte resultado -
Date is Thu Jul 2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul 2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
Substituição de Variável
A substituição de variável permite que o programador shell manipule o valor de uma variável com base em seu estado.
Aqui está a seguinte tabela para todas as substituições possíveis -
Sr. Não. | Formulário e Descrição |
---|---|
1 | ${var} Substitua o valor de var . |
2 | ${var:-word} Se var é nulo ou não definido, palavra é substituída porvar. O valor de var não muda. |
3 | ${var:=word} Se var é nulo ou não definido , var é definido com o valor deword. |
4 | ${var:?message} Se var for nulo ou não definido, a mensagem será impressa no erro padrão. Isso verifica se as variáveis estão definidas corretamente. |
5 | ${var:+word} Se var for definido, a palavra será substituída por var. O valor de var não muda. |
Exemplo
A seguir está o exemplo para mostrar vários estados da substituição acima -
#!/bin/sh
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"
echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"
unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"
var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"
echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"
Após a execução, você receberá o seguinte resultado -
Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix