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