Postagens

O read interno não funciona.

while read line ; do read done < file.txt  exec 3>&0   #Abrir descritor de arquivo 3 que é copia de stdin, while read line ; do  read -u 3 done < file.txt A opção -u diz para read usar um descritor de arquivo especifico. O problema do read interno não  funcionar é porcausa de um  conflito já que o read1 usa stdin e o read2 também usa stdin.  Cada descritor suporta uma informação por vez e o read1 + read2 estava enviando mais de uma informação.

continue e break

continue pula a sequência do loop. break para o loop. for i in {1..40} ; do [  $(expr $i % 2) != 0  ] && continue echo $i Pair Number done resto da divisão diferente de 0 é impar.  Quando a condição for verdadeira será executado continue que irá pular a sequência do loop.  % é o operador mod.    for [ITEM] in [LISTA] ;do        LOOP FOR EXTERNO.      for [ITEM] in [LISTA] ; do     LOOP  FOR INTERNO.         comando    done done  for i in 1 2 3 4 5 ; do    for l in 1 2 3 ; do       [ $i == 2 ] && break 2    echo $l  '$l'    done   echo $i   '$i' done    break é o mesmo que break 1, o break 2  para o loop interno e o loop externo. break e continue com argumento é para especificar os níveis de loops.    

A saída do wget não é transmitida para o próximo comando.

  wget www.google.com   --2021-04-18 12:30:41--  http://www.google.com/ Resolvendo www.google.com (www.google.com)... 2800:3f0:4004:80a::2004, ..... wget www.google.com 1>/dev/null   --2021-04-18 12:30:41--  http://www.google.com/ Resolvendo www.google.com (www.google.com)... 2800:3f0:4004:80a::2004, ..... Mesmo enviando o stdout para /dev/null  a saída ainda é exibida.   wget www.google.com 2>/dev/null    Teve nenhuma saída provando que a saída foi enviada para null com sucesso e a saída enviada foi de stderr.    Agora sabemos que a saída de wget é de stderr.   wget www.google.com | grep index    |   Envia o stdout do comando1 para o comando2.   |&  ou  2>&1 |   Envia o stderr ou stdout do comando1 para o comando2.   wget www.google.com |& grep index    Salvando em: “index.html” 2021-04-18 15:22:08 (360 KB/s) - “index.html” salvo               

Fazer com que a saída do awk seja do ultimo argumento.

 echo chocolate melancia  | awk '{print $NF}'  Saída = melancia awk vai imprimir na tela o valor da $NF variável que é o ultimo argumento.   

Pushd, popd e dirs

Os comandos  pushd, popd e dirs trabalham com a pilha de diretório.   Pilha de diretório  é uma lista de diretórios acessados recentemente. pushd  adiciona o diretório na pilha.    dirs  mostra a pilha de diretório. popd deleta o elemento 0 da lista e entra no novo elemento 0. O elemento começa de 0 a diante.  Elemento 0 da lista é o diretório atual.    cd /usr  pushd  .  cd dir ; cd dir ; cd dir ; cd dir ; cd dir popd    Nesta situação não podia esquecer de voltar para /usr.  Por um momento esqueceu qual era o diretório que tinha que voltar, mas com popd voltou para /usr.   cd /etc ; pushd . dirs  /etc /etc dirs -c O operador -c diz para dirs limpar a lista. dirs /etc cd /usr ; pushd . ; cd /usr/bin ; pushd . /usr/bin /usr/bin /usr cd /home/$USER dirs -v  O operador -v diz para dirs mostrar os números dos elementos da lista.  0  ~  1  /usr/bin  2  /usr cd ~1   pwd  /usr/bin  Como pode ser visto cd tem a função de entrar no diretório do elemento da pilha.  

Variável de { . Variável de matriz

A variável de { serve para separar o nome da variável do que é escrito do lado. A=chucrute echo $As   Não ocorreu nenhuma saída porque a variável $As não existe. echo ${A}s  chucrutes  De forma alternativa pode utilizar aspas para separar o nome da variável dos caracteres seguintes. echo "$A"s  chucrutes Isso funciona bem, mas em algumas ocasiões as aspas pode se apresentar como falta de organização. ls ""$A"s  banana"  Enquanto: ls "${A}s  banana"  O shell interpreta a variável de matriz com a que tenha (  ) em sua formula.  Varm=(choco pamonha limão) O valor da variável Varm é um array porque apresenta um grupo de elementos.  | A  | B  | C  |  Elemento.  |0   |1   |2    |  Número do índice. Através do índice especifica o elemento. Muitas vezes o índice é chamado de subscrito. echo $Varm choco A saída foi choco já que por padrão a variável de matriz apresenta o índice 0.  echo  ${Varm[2]} limão  As chaves dão a função ao colchetes de determinar

Porque wc conta a quantidade de caractere +1 ?

 O wc -m             O operador -m diz para o wc contar a quantidade de caractere.                                                   echo Açucar | wc -m                                         R=7                                                          Deu 7 por um simples motivo o wc está contando com o regex \n que significa nova linha.  Para resolver isso é simples só é usar um comando que não usa \n que é o caso do printf ou utilizar o echo com operador -n.                                                                                                                                                                                                                  printf Açucar | wc -m                                   R=6  echo -n Açucar | wc -m O operador -n diz para o echo para não imprimir nada na nova linha.