Expansão do parâmetro de eco de programação de shell para, enquanto, até três instruções de loop mais break para pular para fora do loop continuar a abortar o loop Ilustração do separador de campo IFS

Insira a descrição da imagem aqui

Parâmetros de eco

  • echo -n # significa nenhuma saída de nova linha
    Insira a descrição da imagem aqui

  • echo -e exibe caracteres de escape, exibe o conteúdo de escape na tela (deve ser usado entre aspas duplas)

  • Os caracteres de escape comumente usados ​​são:\b \c \n \f \v \t \r \\

    • \ b : Depois de escapar, é equivalente a pressionar a tecla backspace (backspace), mas apenas se houver caracteres após "\ b": "\ b" significa excluir o caractere anterior e "\ b \ b" significa excluir o primeiros dois personagens
      Insira a descrição da imagem aqui

    • \ c : saída sem quebra de linha. Quando não houver caracteres após "\ c", a função é equivalente a echo -n, mas quando ainda houver caracteres após "\ c", os caracteres após "\ c" não serão Resultado
      Insira a descrição da imagem aqui

    • \ n : Nova linha, os caracteres a serem produzidos começam em uma nova linha de "\ n". No Linux, \ n tem o significado de retorno de carro
      Insira a descrição da imagem aqui

    • \ f : Nova linha, mas o início da nova linha após a nova linha é conectado ao final da linha anterior
      Insira a descrição da imagem aqui

    • \ v : igual a \ f

    • \ t : após escapar, significa inserir uma guia, ou seja, uma guia horizontal
      Insira a descrição da imagem aqui

    • \ r : o cursor se move para o início da linha, mas não quebra, o que é equivalente a usar os caracteres após "\ r" para substituir os caracteres do mesmo comprimento antes de "\ r", mas quando não há nenhum caractere depois de "\ r", "\ r" "O caractere anterior não será sobrescrito
      Insira a descrição da imagem aqui

    • \\ : significa inserir "\" a si mesmo
      Insira a descrição da imagem aqui

declaração de loop

para declaração de loop

  • Leia diferentes valores de variáveis ​​para executar o mesmo conjunto de comandos um por um (coletivamente chamados de operação transversal)
  • formato
for 变量名 in 取值列表
do
  命令序列
done

Insira a descrição da imagem aqui

  • O exemplo mais simples de loop

    • A primeira forma de expressão: i em {1… 10} —— i em {1… 10… 2} 2 significa adicionar 2 após cada loop de maneira iterativa
      Insira a descrição da imagem aqui
    • A segunda forma de expressão: i em $ (seq 1 10) —— i em $ (seq 1 2 10) tem o mesmo significado que acima
      Insira a descrição da imagem aqui
    • A terceira forma de expressão: (i = 1; i <10; i ++) —— (i = 1; i <= 10; i + = 2) Mesmo significado que acima
      Insira a descrição da imagem aqui
  • Aprendizagem ao vivo e exemplo de aplicação 1
    Adicionar usuários em lotes: os nomes de usuário são armazenados no arquivo users.txt, em cada linha, a senha inicial é definida como 123456
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui

  • Exemplo de aprendizado ao vivo 2
    Verifique o status do host com base no endereço IP. O endereço IP é armazenado no arquivo ipadds.txt, um por linha. Use o comando ping para verificar a conectividade de cada host
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui

instrução while loop

  • Teste uma determinada condição repetidamente e execute-a repetidamente, desde que a condição seja verdadeira
  • formato
while 条件测试操作
do
  命令序列
done

Insira a descrição da imagem aqui

  • Embora operação simples (a posição de inserção da iteração no conteúdo de saída tem uma certa relação)
    Insira a descrição da imagem aqui
  • Alguns exemplos da aplicação da instrução while
    1. Adicionar usuários em lotes: O nome de usuário deve começar com stu e ser numerado em ordem numérica. Há 20 no total, a saber stu1 ... stu20, e a senha é definida como 123456
    Insira a descrição da imagem aqui
  • Dificuldade de atualização
    2. Adivinhe o jogo do preço das commodities: obtenha um número aleatório por meio da variável RANDOM, solicite ao usuário que adivinhe e registre o número de vezes e saia do loop após adivinhar
  • RANDOM pode obter aleatoriamente valores aleatórios de 0-32767
  • Se quisermos gerar números no intervalo de 0 a 25:$(($RANDOM%26))
  • Se você deseja obter um número no intervalo de 1 a 68: $(($RANDOM%68+1 ))
  • Se você deseja obter um número no intervalo de 6 a 87: $(($RANDOM%82+6 ))
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui

até declaração de loop

  • Teste uma determinada condição repetidamente e execute-a repetidamente, desde que a condição não seja estabelecida
  • Equivalente a while por turno com while, até parecer um pouco sem gosto
until 条件测试操作
do 
  命令序列
done

Insira a descrição da imagem aqui

  • até a operação simples
    Insira a descrição da imagem aqui
  • Alguns exemplos de declaração até
    1. Calcule o valor da soma de 1 a 50 e calcule por acumulação de loop
    Insira a descrição da imagem aqui

sair do circuito

  • break : pula para fora do loop que contém break
  • Laço duplo simples
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui
  • Salte do loop de camada única no loop interno
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui
  • pausa é sequencial

Insira a descrição da imagem aqui

  • break 2: Significa que o número depois de pular para fora da 2ª camada do loop é quantas camadas estão fora do loop

continue a abortar um único loop

  • continue : aborta um comando em um loop, mas não interrompe completamente o comando inteiro
    Insira a descrição da imagem aqui
    Insira a descrição da imagem aqui
  • Não é recomendado usar continue em um loop while
    Insira a descrição da imagem aqui
    #Continue é usado em while.Neste momento, a posição do código iterativo é muito importante e afetará o resultado de todo o código.

Separador de campo IFS

  • O separador de campo IFS
    contém espaços , tabulações e novas linhas por padrão\t\n

Se uma parte do conteúdo editado em users.txt tiver espaços
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

  • IFS=$' \t\n'
    Insira a descrição da imagem aqui
  • Você pode redefinir a variável de IFS
    IFS=$'\n'# para reconhecer apenas o caractere de nova linha
  • O que devo fazer se o espaço não puder ser reconhecido depois que o IFS for modificado e outras operações forem realizadas
IFS=$'\n'    #进行重新定义变量IFS只识别换行符
OLDIFS=$' \t\n'   #重新定义之前的内容
.......
IFS=$OLDIFS   #把定义的变量重新定义给IFS

Acho que você gosta

Origin blog.csdn.net/weixin_53496398/article/details/114446196
Recomendado
Clasificación