Como obter 2 resultados diferentes de 1 arquivo no unix?

1

Então eu estou tentando fazer um calabouço e eu quero ter duas respostas diferentes quando eu entro no quarto, mas isso é o que eu posso conseguir. Como obtenho dois resultados diferentes de um arquivo?

Então, quando você abre um arquivo pela primeira vez, eu quero que ele exiba um conteúdo específico, quando você retornar ao arquivo e reabri-lo, eu quero que ele exiba um conteúdo diferente. No entanto, ambos os conteúdos estão no mesmo arquivo. Só quero que um conteúdo seja lido na primeira visita e o segundo conteúdo seja lido após as visitas repetidas.

É possível ter duas saídas separadas para um arquivo. Exemplo, se você executar o arquivo abaixo pela primeira vez, receberá a resposta "sup sup" e se você executá-lo uma segunda vez, receberá a resposta "não, não". Este é apenas um exemplo, mas é isso que eu estou tentando chegar. Então, como exatamente posso gerenciar isso?

this=1
if [ "$this"=="1" ]; then
echo "sup sup"
let "this=$this - 1"
fi
if [ "$this"=="0" ]; then
echo "no no"
fi
    
por Ash Ly 26.11.2014 / 18:18

2 respostas

1

Você pode usar a variável $RANDOM de dentro dos scripts Bash para obter algo diferente sempre que for chamado. Ele retorna números inteiros (0-32767), mas você pode testar para ver se os números são par ou ímpares e, em seguida, transformar isso em um sim ou não.

$ echo $RANDOM
2104

$ echo $RANDOM
25188

Exemplo par / ímpar

$ if (( RANDOM % 2 )); then echo even; else echo odd; fi
even
$ if (( RANDOM % 2 )); then echo even; else echo odd; fi
even
$ if (( RANDOM % 2 )); then echo even; else echo odd; fi
odd

O acima está usando o operador de divisão do módulo para dividir o número atual de $RANDOM por 2. Se $RANDOM for par, então ecoamos a mensagem, "par", caso contrário, ecoamos "ímpar".

Isso pode ser adaptado em uma opção "sim" ou "não" que você pode usar em seu script.

Referências

por 26.11.2014 / 18:34
0

Isso depende de como o conteúdo é organizado nesse arquivo, mas você só precisa saber se abriu o arquivo no script.

# Example where the first time opening, line 1 is printed, and subsequent times
# line 2 is printed
file_opened=0
# ... code
if [ $file_opened -eq 0 ]; then
    # code for first time opening, e.g.:
    head -1 the_file.txt # Prints line 1
    file_opened=1
else
    # code for subsequent times, e.g.:
    sed -n '2{p;q}' the_file.txt # Prints line 2
 fi
    
por 26.11.2014 / 18:46