Eu preciso de ajuda para entender este script bash

1

Eu estive pesquisando cada parâmetro etc neste script tentando entender o que cada linha está dizendo (se isso faz sentido). Eu me perguntei se alguém seria gentil o suficiente para me ajudar, ajudando-me a "traduzir" para o inglês simples, o que tudo significa? Eu fiz as primeiras 5 linhas, mas não tenho certeza se está correto: / Qualquer ajuda é apreciada. Obrigada!

Este é o script:

#!/bin/bash
current=0
while [ $SECONDS -le 10 ]; do
    if [ $SECONDS -eq ${current} ]; then
        echo ${current}
        current=$((${current}+1))
    fi
done
    
por JuiceBoxx 22.10.2016 / 03:15

1 resposta

4

A magia da variável bash interna $ SECONDS

Seu script destaca a variável bash incorporada $SECONDS , que controla quantos segundos um script bash está sendo executado. Inicialmente, ele começa em zero e a variável de trabalho current é configurada para esse valor no início do script. Em seguida, o script faz um loop e incrementa current a cada vez que $ SECONDS é alterado e exibe "1, 2, 3 ... 10" na tela.

Analisando o script bash linha por linha:

#!/bin/bash informa ao sistema que este é um script bash

current=0 define a variável atual como 0

while [ $SECONDS -le 10 ]; do Quando o número de segundos que esse script está sendo executado for menor ou igual a 10, faça o seguinte

if [ $SECONDS -eq ${current} ]; then se o valor da corrente for igual ao número de segundos e, em seguida:

echo ${current} exibe o valor atual (0 inicialmente, depois 1, 2, 3 ... a 10)

current=$((${current}+1)) incrementa o valor atual

fi Instrução End of If, necessária para regras de sintaxe

done end do loop While, necessário para regras de sintaxe

Testando o script

Para testar esse script, copie e cole o texto do OP em um novo arquivo. Para nossos propósitos, chame o arquivo seconds . Marque o arquivo como executável com o comando:

chmod +x seconds

Em seguida, chame o script bash com o prefixo de diretório atual na frente:

./seconds
    
por WinEunuuchs2Unix 22.10.2016 / 03:29