Linux, Variáveis…

Variáveis especiais

Variáveis especiais, os argumentos da linha de comando são acessados dentro do código dos scripts de shell usando outro conjunto de variáveis especiais. Essas variáveis são parâmetros posicionais: $ 1, $ 2,. . . , $ n que contém valores fornecidos pelo usuário para: arg1, arg2,…, argn. $# (o número de argumentos passados para o script). $*, $@. Ambas as variáveis têm o mesmo uso: elas contêm a lista de argumentos. Comandos para imprimir Shell e variáveis de ambiente:

printenv

printenv SHELL

set | less

printenv | grep VAR_TESTE

Nenhuma saída será retornada ao executar "printenv | grep VAR_TESTE".

Vamos considerar isso como uma oportunidade de demonstrar uma maneira de acessar o valor de qualquer variável shell ou variável ambiental.

Como você pode ver, faça referência ao valor de uma variável precedendo-a com um sinal $. O shell considera que isso deve substituir o valor da variável quando se deparar com isso.


bash
echo $VAR_TESTE


Se digitarmos bash para gerar um shell filho e tentarmos acessar o conteúdo da variável, nada será retornado. Isso é o que se espera. Volte para o shell original digitando exit.

---

Fico por aqui. Até breve!

🙂

---


Fonte: https://www.digitalocean.com/community/tutorials/how-to-read-and-set-environmental-and-shell-variables-on-a-linux-vps

Variáveis, Bash shell e sub shell

Linux - Variáveis, Bash shell e sub shell

Como atribuir a saída de um comando shell a uma variável de shell sob o sistema operacional Unix? Por exemplo, armazenar a saída do comando date em uma variável chamada $AGORA ou $VAR. Como faz isso? E outras coisas fáceis e úteis sobre variáveis tem muita? Alguma coisa? Qualquer coisa?

Anotações interessantes... Veja só:


Um computador deve ser capaz de armazenar informações e, posteriormente, fazer operações com essas informações. Deveria haver uma maneira de armazenar informações e depois recuperar essas informações. Os programas de computador também lidam com armazenamento e recuperação de informações. Para armazenar informações, precisamos de espaço de armazenamento (memória do computador). Para recuperar as informações armazenadas na memória, precisamos especificar o local de armazenamento onde as informações são armazenadas. Então, basicamente, precisamos de um nome ou algum tipo de identificador para recuperar as informações armazenadas. É aqui que as variáveis entram em cena...

VAR=$(nome-do-comando-aqui)

VAR=$(nome-do-comando-aqui arg1)

VAR=$(/caminho/para/comando)

VAR=$(/caminho/para/comando arg1 arg2)



OBS:
Não coloque nenhum espaço após o sinal de igual e o comando deve estar no lado direito de =


Exemplos, para armazenar a saída do comando date em uma variável chamada VAR, insira:


VAR=$(date)

OU:

VAR=`date`

Para exibir o resultado de retorno (ou a saída armazenada em uma variável chamada $now), use o comando echo ou printf:

echo "$VAR"

OU:

printf "%s\n" "$VAR"


Lembrando das variáveis de ambiente...
Você pode usar qualquer um dos seguintes comandos para exibir as variáveis de ambiente e seus valores.


a) printenv command
Imprime todo ou parte do ambiente.

b) env command
Imprima todo o ambiente exportado ou execute um programa em um ambiente modificado.

c) set command
Imprima o nome e o valor de cada variável do shell.


Exemplos:

printenv

OU:

printenv | less

OU:

printenv | more


Você pode combinar o comando echo e as variáveis do shell da seguinte maneira:


echo "Hoje é $VAR"


Executando no Bash comando dois em um... Substituição de comandos.


E se alguém quisesse que sempre que executasse o comando cd em um diretório ele automaticamente executasse um comando ls?


Você pode fazer isso com uma função:

cdls () {cd "$@" && ls;}


O && significa 'cd para um diretório e, se for bem-sucedido (por exemplo, o diretório existe), execute ls'. Usando o operador && é melhor, em seguida, usando um ponto e vírgula; operador entre os dois comandos, como com {cd "$ @"; ls; }. Este segundo comando executará ls independentemente de o cd funcionar ou não. Se o cd falhou, ls irá imprimir o conteúdo do seu diretório atual, o que será confuso para o usuário. Como prática recomendada, use "&&" e não ";".
E mais uma coisa... quase sempre, é uma prática ruim renomear um comando que já existe, especialmente para um comando comumente chamado como cd. Em vez disso, crie um novo comando com um nome diferente. Se você sobrescrever cd com uma função ou alias que também é chamado cd, o que aconteceria quando você entra em um diretório com 100.000 arquivos? Existem muitos utilitários que usam cd, e eles podem ficar confusos com esse comportamento incomum. Se você usar uma conta compartilhada (como root quando estiver trabalhando com outros administradores de sistema), pode ser muito perigoso substituir um comando existente porque o ambiente é diferente do que as pessoas esperam.


---


Substituição de Comandos


Sintaxe:

Você pode usar o acento grave (`) para executar uma substituição de comando. A sintaxe é:


`echo $VAR`

OU

echo $(nome-do-comando)


Substituição de comando em um comando echo


echo "Text $(nome-do-comando)

Variáveis de substituição e shell do comando


Você pode armazenar a saída do comando em uma variável shell usando a seguinte sintaxe:


echo var=$(command-name)


Armazene a data e a hora atuais em uma variável chamada NOW:


echo NOW=$(date)
echo "$NOW"


Armazene o nome do host do sistema em uma variável chamada SERVERNAME:


echo SERVERNAME=$(hostname)
echo "Running command @ $SERVERNAME...."


Armazene o nome do diretório de trabalho atual em uma variável chamada CWD:


echo CWD=$(pwd)
echo cd /caminho/para/algum/lugar
echo "Diretório atual $(pwd) e agora voltando ao antigo dir ..."
echo cd $CWD


Substituição de comando e loops de shell


O loop de shell pode usar a substituição de comando para obter entrada:


for f in $(ls /etc/*.conf)
do
echo "$f"
done


No entanto, uma sintaxe recomendada é a seguinte para as seleções de arquivos:


for f in /etc/*.conf
do
echo "$f"
done



---

Fico por aqui. Até breve!


🙂

---


Fontes:
https://bash.cyberciti.biz/guide/What_is_a_Subshell%3F
https://unix.stackexchange.com/questions/23179/how-to-send-variable-to-sub-shell
https://stackoverflow.com/questions/34799161/difference-between-linux-variables-bash-subshell-vs-shlvl

Anotacões Bash ShellScript 2018

:: 2018 ::

[Anotacões Bash ShellScript]

--

Bash (shell Bourne-again) é um shell padrão em muitos sistemas operacionais como Linux, Mac OS X, etc.
O Bash tem a capacidade de executar um script inteiro de comandos, conhecido como Bash Shell Script (script bash ou shell script ou script ).
O script pode conter comandos, funções, loops, etc para programação.

--

ALIAS E HISTORY:

O comando alias pode fornecer um novo alias para o comando original no formato de string.

alias name=string (por exemplo, se você digitar alias dir='ls -aF' e, em seguida, chamar o apelido 'dir', o resultado do comando 'ls -aF' será mostrado.)

Para verificar os aliases definidos, basta chamar o comando alias. Para remover o alias definido, podemos chamar o comando, nome da unalias.

O comando history mostra os comandos de entrada. Para redefinir todo o histórico de comandos, você pode chamar o histórico -c.

--

REEXECUTANDO COMANDOS:

Digite !! para executar o comando antes.
Digite! N para executar o comando com o número do evento n.
Digite! Abc para executar o comando mais recente que começa com abc.
Digite! Bbb para executar o comando mais recente que inclui bbb.

--

VARIÁVEL SIMPLES:

variable_name=string
irá criar uma variável chamada variable_name com a string de valor. Quando você chamar o comando echo $ variable_name, a string será impressa.

Você pode salvar outro valor na variável definida como desejar.

Você também pode criar várias variáveis de uma só vez.
(Ex. MEU=meu VOCE=seu)

Para definir um valor com espaços, use “”.
(Ex. Saudação = "como vai você?")

--

VARIÁVEL DE LISTA:

1.
variable_name=(lista de string)

(salvará a lista de strings incluindo os elementos, list, of e string em variable_name.)

2.
{name [n]} é o enésimo elemento na variável de lista, nome.

(Ex. Echo $ {variable_name [1] será impresso de. Variable_name [1] = new definirá o primeiro elemento de variable_name como novo.)

3.
{name [*]} e {name [@]} significam todos os elementos na variável list, name.

(Ex. Echo $ {variable_name [*]} imprimirá a lista da string.)

4.
{#name [*]} e {#name [@]} é o número de elementos na variável de lista, nome

(que é o tamanho da variável de lista). (Ex. Echo $ {# variable_name [*]} será impresso 3.)

--

LENDO A ENTRADA PADRÃO:

O comando read lerá uma linha da entrada padrão (teclado) e salvará as palavras nas variáveis ordenadamente. Ele salva...

read um b
Olá Mundo ! vai salvar Olá em um mundo e! em b.

read um
Olá Mundo ! vai salvar Olá Mundo! dentro de.

--

VARIÁVEL DE AMBIENTE E VARIÁVEL LOCAL:

A variável de ambiente é herdada do processo pai, mas a variável local não. Assim, se o processo filho for aquele que está sendo executado, o valor do primeiro permanece o mesmo, mas o valor deste é inicializado novamente.

--

PARA USAR A VARIÁVEL LOCAL NO PROCESSO FILHO, USE export.

Ex.

country=where
export $country

--

VARIÁVEL DE AMBIENTE PREDEFINIDA:

As variáveis ​​de ambiente predefinidas são as seguintes...

$USER - nome de usuário
$TERM - tipo terminal
$PATH - a lista do diretório onde o comando deve ser pesquisado
$HOME - diretório de casa
$SHELL - caminho do shell de login
$MAIL - caminho da caixa de correio
$HOSTNAME - nome do host

--

VOCÊ PODE VERIFICAR OS VALORES DESSAS VARIÁVEIS ​​CHAMANDO echo $VARIABLE.

--

VARIÁVEL LOCAL PREDEFINIDA:

As variáveis ​​locais predefinidas são as seguintes...

$$ - o número do processo do shell
$0 - nome do script de venda
$n - nth parâmetro de comando
$* - todos os parâmetros de comando
$# - o número de parâmetros de comando

--

(1) CRIE UM ARQUIVO CHAMADO test.bash COM O CONTEÚDO MOSTRADO ABAIXO:

#!/bin/bash

# test.bash

$0=test.bash
$1=ola
$2=mundo

echo o nome deste script é $0

O primeiro parâmetro de comando echo é $1

echo todos os parâmetros de comando são $*

echo o número de processos que executa este script é $$

(2) Digite test.bash hello world para verificar o resultado da seguinte forma:

o nome desse script é test.bash

primeiro parâmetro de comando é ola

todos os parâmetros de comando são ola mundo

o número do processo que executa este script é processnumberhere

--

VARIÁVEL DE AMBIENTE PRÉ-DEFINIDO:

As variáveis ​​de ambiente são definidas como seguintes:

$USER - nome do usuário
$TERM - terminal tipo
$PATH - uma lista do arquivo onde o comando deve ser pesquisado
$HOME - diretório de casa
$SHELL - caminho do shell de login
$MAIL - caminho da caixa de correio
$HOSTNAME - nome do host

--

VARIÁVEL DE AMBIENTE E VARIÁVEL LOCAL:

A variável de ambiente é herdada do processo pai, mas a variável local não. Assim, se o processo filho for aquele que está sendo executado, o valor do primeiro permanece o mesmo, mas o valor deste é inicializado novamente.

Para usar a variável local no processo filho, use export.

Ex.

COUNTRY=where
export $COUNTRY

--

VOCÊ PODE VERIFICAR OS VALORES DESSAS VARIÁVEIS CHAMANDO: echo $VARIABLE.

--

OPERADORES DE IGUALDADE:

integer1 -eq integer2 - verdadeiro se dois inteiros são iguais
integer1 -ne integer2 - verdadeiro se dois inteiros não são iguais
integer1 -gt integer2 - verdadeiro se integer1 for maior que integer2
integer1 -ge integer2 - verdadeiro se integer1 for maior ou igual a integer2
integer1 -lt integer2 - verdadeiro se integer1 for menor que integer2
integer1 -le integer2 - verdadeiro se integer1 for menor ou igual a integer2

string1 == string2 - verdadeiro se duas strings forem iguais
string1! = string2 - verdadeiro se duas strings não forem iguais
-n string - verdadeiro se string não é nula
-z string - verdadeiro se string é nula

--

OPERAÇÕES RELACIONADAS AO ARQUIVO:

-a arquivo / -e arquivo - verdadeiro se o arquivo existir
-r arquivo - verdadeiro se o arquivo puder ser lido pelo usuário
-w arquivo - verdadeiro se o arquivo puder ser escrito pelo usuário
-x arquivo - verdadeiro se o arquivo puder ser executado pelo usuário
-O arquivo - verdadeiro se o usuário é o proprietário do arquivo
-z arquivo - verdadeiro se o tamanho do arquivo for 0
-f arquivo - verdadeiro se o arquivo é um arquivo normal
-d arquivo - verdadeiro se o arquivo é um diretório

--

OPERADORES BOOLEANOS:

! - negação

& - lógica e

|| - lógico ou

COMO COLOCAR CONDIÇÕES? - Usando os operadores indicados acima, podemos definir condições para comandos. Basta colocar as condições em []. Por exemplo, [$ variable -ge 10] é a condição em que o valor da variável é maior ou igual a 10.

--

OPERADORES ARITMÉTICOS:

Nós podemos fazer operações aritméticas diretamente no shell, usando let variável = expressão.
E para declarar o tipo de dados, podemos usar a variável -option declare.

--

DECLARAR AS OPÇÕES:

declare -r variável— declarar variável como somente leitura
declare -i variável— declarar variável como tipo intever
declare -a variable— declare variable como array
declare -f— mostra todas as funções declaradas no script
declare -f— function mostra o nome da função
declare -x— variável export como variável de ambiente

--

DECLARAÇÕES CONDICIONAIS:

se declarações:

(1) if declaração

if [condição]

então

conjunto de comandos

fi

--

(2) DECLARAÇÃO IF-THEN-ELSE

if [condição]

then

conjunto de comandos

else

conjunto de comandos

fi

--

(3) ANINHADO-SE DECLARAÇÃO

if [condição]

then

conjunto de comandos

elif [condição]

então

conjunto de comandos

else

conjunto de comandos

fi

--

EXPRESSÕES MATEMÁTICAS USADAS EM OPERAÇÕES:

- negativo
! - negociar
* /% - multiplicação, divisão, resto
+ - - adição, subtração
<> - deslocar o bit para a esquerda, deslocar o bit para a direita
= - operadores relacionais
==! = - igual, não igual
|| && - ou e
& ^ | - bit e, bit xor, bit ou

--

Até Breve!

🙂

.

Linux shell script brincando com variáveis

Um script bem simples mas que utiliza variáveis. Chamo de:

08-teste-5variaveis.sh

.

#!/bin/bash

clear

# Este script testa o uso de variáveis

# Definindo 5 variáveis

echo ; echo 'Definindo 5 variáveis em 10 segundos.' ; sleep 3 ; echo

VALOR1='ls -t' ; sleep 2 ; VALOR2='pwd' ; sleep 2 ; VALOR3='cal' ; sleep 2 ; VALOR4='uptime' ; sleep 2 ; VALOR5='whoami' ; sleep 2

# Executando as 5 variáveis

echo 'Executando as 5 variáveis com explicações.' ; sleep 4 ; echo

echo 'Vamos listar o conteúdo desta pasta:' ; echo ; $VALOR1 ; sleep 4 ; echo ; echo 'Vamos saber onde estamos localizados no sistema:' ; sleep 4 ; echo ; $VALOR2 ; sleep 4 ; echo ; echo 'Vamos ver o calendário atual' ; sleep 4 ; echo ; $VALOR3 ; echo ; echo 'Vamos saber o tempo de funcionamento da máquina:' ; sleep 4 ; echo ; $VALOR4 ; sleep 4 ; echo ; echo 'Vamos saber qual é o usuário logado' ; sleep 4 ; echo ; $VALOR5 ; echo

sleep 5

echo 'Executando apenas as variáveis:' ; echo ; $VALOR1 ; sleep 2 ; $VALOR2 ; sleep 2 ; $VALOR3 ; sleep 2 ; $VALOR4 ; sleep 2 ; $VALOR5

# Removendo as 5 variáveis pois este script é apenas um teste

echo ; echo 'Removendo as 5 variáveis em 10 segundos, pois este script é apenas um teste' ; sleep 4 ; echo

unset VALOR1 ; sleep 2 ; unset VALOR2 ; sleep 2 ; unset VALOR3 ; sleep 2 ; unset VALOR4 ; sleep 2 ; unset VALOR5 ; sleep 2

echo ; echo '10 seg para testar as variáveis que não devem ecoar valores' ; sleep 4 ; echo

echo 'Testando as variáveis:' ; echo ; $VALOR1 ; sleep 2 ; $VALOR2 ; sleep 2 ; $VALOR3 ; sleep 2 ; $VALOR4 ; sleep 2 ; $VALOR5

exit

# Fim do script

.

Até breve!

.

🙂

.