Como excluir valores repititos de um shuf -n 1 [RESOLVIDO]

1. Como excluir valores repititos de um shuf -n 1 [RESOLVIDO]

João Pedro Vieira Godoy
JoaoP-Vieira

(usa Fedora)

Enviado em 26/08/2021 - 13:06h

Estou fazendo um script que me retorne um arquivo aleatório de um diretório sem repitilo.
Prentendo usar esse script para trocar o meu papel de parede automaticamente para uma imagem aleatória.

Esse é meu código:
#!/bin/sh

last=""

func1() {
first=$(ls $1 | shuf -n 1)

if [[ "$firs" == "$last" ]]; then
echo "é igual"
# Se for igual ele executa a função novamente até encontrar um valor diferente
else
echo "é diferente"
# Continua o código
fi

export last="$first"

sleep 2

func1 $1
}

func1 $1


Por algum motivo o meu código após a primeira execução da função a condicional if só me retorna false mesmo se for igual.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/08/2021 - 00:35h

JoaoP-Vieira escreveu:

Estou fazendo um script que me retorne um arquivo aleatório de um diretório sem repitilo.
Prentendo usar esse script para trocar o meu papel de parede automaticamente para uma imagem aleatória.

Esse é meu código:
#!/bin/sh

last=""

func1() {
first=$(ls $1 | shuf -n 1)

if [[ "$firs" == "$last" ]]; then
echo "é igual"
# Se for igual ele executa a função novamente até encontrar um valor diferente
else
echo "é diferente"
# Continua o código
fi

export last="$first"

sleep 2

func1 $1
}

func1 $1


Por algum motivo o meu código após a primeira execução da função a condicional if só me retorna false mesmo se for igual.

Boa noite João P,
segue sugestão:

#!/bin/bash

#perfumaria para testes#
L00=0;L01=0;
linha=$(printf "%40s"|tr ' ' '_';);
#L00=looping while
#L01=looping for

while :;do
for imagem in $(ls $1|shuf);do
export ${imagem};
printf "%03d %03d %s\n" $L00 $L01 ${imagem} #usado para testes
let L01++;sleep 3;
done;
let L00++;L01=0;
echo "$linha"; #usado para testes
done



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________


3. Re: Como excluir valores repititos de um shuf -n 1 [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 26/08/2021 - 18:33h


JoaoP-Vieira escreveu:

Estou fazendo um script que me retorne um arquivo aleatório de um diretório sem repitilo.
Prentendo usar esse script para trocar o meu papel de parede automaticamente para uma imagem aleatória.

Esse é meu código:
#!/bin/sh

last=""

func1() {
first=$(ls $1 | shuf -n 1)

if [[ "$firs" == "$last" ]]; then
echo "é igual"
# Se for igual ele executa a função novamente até encontrar um valor diferente
else
echo "é diferente"
# Continua o código
fi

export last="$first"

sleep 2

func1 $1
}

func1 $1


Por algum motivo o meu código após a primeira execução da função a condicional if só me retorna false mesmo se for igual.

Tem um erro de sintaxe na linha do if
if [[ "$first" == "$last" ]]; then
Não sei se é uma boa ideia fazer chamadas recursivas no shell


4. Re: Como excluir valores repititos de um shuf -n 1 [RESOLVIDO]

João Pedro Vieira Godoy
JoaoP-Vieira

(usa Fedora)

Enviado em 26/08/2021 - 19:18h


leandropscardua escreveu:

Tem um erro de sintaxe na linha do if
if [[ "$first" == "$last" ]]; then
Não sei se é uma boa ideia fazer chamadas recursivas no shell


Realmente, estava fazendo alguns testes aqui e deixando sem essa verificação e atualizando o wallpaper a cada 3 minutos já é bem mau perfomatico, imagina com a verificação.









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts