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
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.
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
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.
Tags grep pipe shell-script