Não obtendo grep com uma variável

0

Eu estou atribuindo uma variável ao comando echo que gera um número aleatório.

Por exemplo: n=$(echo $(( (RANDOM%6) +1)) . Eu tenho que grep esta variável em /etc/passwd .

Então, minha sintaxe é como:

n=$(echo $(( (RANDOM%6) +1)) | grep "$n" /etc/passwd

Mas recebo todo o conteúdo do arquivo ( /etc/passwd ) como saída. Eu não sei onde a sintaxe está errada.

É importante obter a saída em apenas uma linha.

    
por Deep Gajjar 09.03.2015 / 20:44

2 respostas

1

Percebo que você separa dois comandos que são executados em sequência e não compartilham Io com um canal em vez de um ponto-e-vírgula. Experimente

n=$(echo $(( (RANDOM%6) +1)) ; grep "$n" /etc/passwd
    
por 09.03.2015 / 22:00
0

For eg: n=$(echo $(( (RANDOM%6) +1)). I have to grep this variable in /etc/passwd.

Você está tentando imprimir todas as linhas de /etc/passwd que contêm um número aleatório de um a seis?

Isso não seria apenas (assumindo bash ou zsh ou ksh para $RANDOM , que o shell base POSIX não suporta ):

grep $((RANDOM%6+1)) /etc/passwd

Se você precisar desse número aleatório em outro lugar:

n=$((RANDOM%6+1))
grep $n /etc/passwd

Eu não acho que isso é o que você está tentando fazer, mas você simplificou demais sua pergunta e perdeu essa intenção.

    
por 10.03.2015 / 21:41