Discussion:
[shell-script] Variavel $1
Alyson Franklin alysonfranklinreal@gmail.com [shell-script]
2017-03-22 03:20:07 UTC
Permalink
Fala Mestre Julio e Cia, beleza?

Então, conheço/trabalho com linux mais ou menos 3 anos, e esses dias
comprei seu livro "*10° edição de programação shell script*".

Em uma semana lendo o livro (ainda estou na página 218) consegui fazer
alguns scripts que me ajudaram muito no dia a dia, principalmente porque
trabalho muito com logs/históricos gigantescos.

Em uma das páginas de seu livro, tinha o seguinte script:

#!/bin/bash
if who | grep $1 > /dev/null
then
echo $1 esta logado
else
echo $1 não esta logado
fi

Beleza, fiz esse mesmo script na minha maquina e tive um resultado não
esperado que meu deixou confuso:

Resultado da execução do script:
*Uso: grep [OPÇÃO]... PADRÃO [ARQUIVO]...*
*Experimente "grep --help" para mais informações.*
*não esta logado*

O resultado foi exatamente este citado acima. Ele informou "não está
logado" sem o nome do usuário que está e/ou não está logado e ainda me
exibiu o help do grep.

Gostaria de saber por que isso aconteceu ??

Eu já coloquei a váriavel "$1" entre aspas e tive apenas isso como
resultado:
não esta logado (mais uma vez sem o nome do usuário).


*Versão do meu bash: 4.3.11(1)-release-(x86_64-pc-linux-gnu)*

Desde já agradeço a ajuda de todos.
Raul Libório rauhmaru@gmail.com [shell-script]
2017-03-22 03:30:03 UTC
Permalink
Pelo que eu entendi, você deve executar o script e passar o nome de um
usuário como o primeiro parâmetro ($1).
Daí, ele vai dizer se o usuário (primeiro parâmetro, $1) está logado ou não.

***@finarfin:~> ./script.sh raul
raul esta logado
***@finarfin:~> ./script.sh trump
trump não esta logado
***@finarfin:~>


Raul Libório
http://rauhmaru.blogspot.com/
openSUSE Member | Linux User #4444581

/etc/httpd/conf.d/ssl.conf:7
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
Post by Alyson Franklin ***@gmail.com [shell-script]
Fala Mestre Julio e Cia, beleza?
Então, conheço/trabalho com linux mais ou menos 3 anos, e esses dias
comprei seu livro "*10° edição de programação shell script*".
Em uma semana lendo o livro (ainda estou na página 218) consegui fazer
alguns scripts que me ajudaram muito no dia a dia, principalmente porque
trabalho muito com logs/históricos gigantescos.
#!/bin/bash
if who | grep $1 > /dev/null
then
echo $1 esta logado
else
echo $1 não esta logado
fi
Beleza, fiz esse mesmo script na minha maquina e tive um resultado não
*Uso: grep [OPÇÃO]... PADRÃO [ARQUIVO]...*
*Experimente "grep --help" para mais informações.*
*não esta logado*
O resultado foi exatamente este citado acima. Ele informou "não está
logado" sem o nome do usuário que está e/ou não está logado e ainda me
exibiu o help do grep.
Gostaria de saber por que isso aconteceu ??
Eu já coloquei a váriavel "$1" entre aspas e tive apenas isso como
não esta logado (mais uma vez sem o nome do usuário).
*Versão do meu bash: 4.3.11(1)-release-(x86_64-pc-linux-gnu)*
Desde já agradeço a ajuda de todos.
Alyson Franklin alysonfranklinreal@gmail.com [shell-script]
2017-03-22 03:58:12 UTC
Permalink
Boa, Raul!
Era isso mesmo.

Eu não sabia que dava pra passar um parâmetro pro script sem usar o "read".

Muito obrigado pela rápida ajuda :D
Post by Raul Libório ***@gmail.com [shell-script]
Pelo que eu entendi, você deve executar o script e passar o nome de um
usuário como o primeiro parâmetro ($1).
Daí, ele vai dizer se o usuário (primeiro parâmetro, $1) está logado ou não.
raul esta logado
trump não esta logado
Raul Libório
http://rauhmaru.blogspot.com/
openSUSE Member | Linux User #4444581
/etc/httpd/conf.d/ssl.conf:7
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
Post by Alyson Franklin ***@gmail.com [shell-script]
Fala Mestre Julio e Cia, beleza?
Então, conheço/trabalho com linux mais ou menos 3 anos, e esses dias
comprei seu livro "*10° edição de programação shell script*".
Em uma semana lendo o livro (ainda estou na página 218) consegui fazer
alguns scripts que me ajudaram muito no dia a dia, principalmente porque
trabalho muito com logs/históricos gigantescos.
#!/bin/bash
if who | grep $1 > /dev/null
then
echo $1 esta logado
else
echo $1 não esta logado
fi
Beleza, fiz esse mesmo script na minha maquina e tive um resultado não
*Uso: grep [OPÇÃO]... PADRÃO [ARQUIVO]...*
*Experimente "grep --help" para mais informações.*
*não esta logado*
O resultado foi exatamente este citado acima. Ele informou "não está
logado" sem o nome do usuário que está e/ou não está logado e ainda me
exibiu o help do grep.
Gostaria de saber por que isso aconteceu ??
Eu já coloquei a váriavel "$1" entre aspas e tive apenas isso como
não esta logado (mais uma vez sem o nome do usuário).
*Versão do meu bash: 4.3.11(1)-release-(x86_64-pc-linux-gnu)*
Desde já agradeço a ajuda de todos.
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-03-22 14:05:18 UTC
Permalink
Fala Alyson,
por isso vc chegou na página 280 em uma semana... Vc usou atalhos... ;)

Estou te zoando, mas estou sem o livro e não sei em que capítulo fica a
página 280, mas desconfio que vc "matou" um capítulo inteiro, onde fala só
de passagens de parâmetros e do xargs (que é um cmd que passa parâmetros).

Como disse um taxista que peguei (com todo respeito) na semana passada: dá
uma "marcha ré pra trás" e dá uma estudada no, se não me engano, capítulo
3, que vc vai aprender tudo sobre passagens de parâmetros.

Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Alyson Franklin ***@gmail.com [shell-script]
Boa, Raul!
Era isso mesmo.
Eu não sabia que dava pra passar um parâmetro pro script sem usar o "read".
Muito obrigado pela rápida ajuda :D
Post by Raul Libório ***@gmail.com [shell-script]
Pelo que eu entendi, você deve executar o script e passar o nome de um
usuário como o primeiro parâmetro ($1).
Daí, ele vai dizer se o usuário (primeiro parâmetro, $1) está logado ou
não.
raul esta logado
trump não esta logado
Raul Libório
http://rauhmaru.blogspot.com/
openSUSE Member | Linux User #4444581
/etc/httpd/conf.d/ssl.conf:7
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
Post by Alyson Franklin ***@gmail.com [shell-script]
Fala Mestre Julio e Cia, beleza?
Então, conheço/trabalho com linux mais ou menos 3 anos, e esses dias
comprei seu livro "*10° edição de programação shell script*".
Em uma semana lendo o livro (ainda estou na página 218) consegui fazer
alguns scripts que me ajudaram muito no dia a dia, principalmente porque
trabalho muito com logs/históricos gigantescos.
#!/bin/bash
if who | grep $1 > /dev/null
then
echo $1 esta logado
else
echo $1 não esta logado
fi
Beleza, fiz esse mesmo script na minha maquina e tive um resultado não
*Uso: grep [OPÇÃO]... PADRÃO [ARQUIVO]...*
*Experimente "grep --help" para mais informações.*
*não esta logado*
O resultado foi exatamente este citado acima. Ele informou "não está
logado" sem o nome do usuário que está e/ou não está logado e ainda me
exibiu o help do grep.
Gostaria de saber por que isso aconteceu ??
Eu já coloquei a váriavel "$1" entre aspas e tive apenas isso como
não esta logado (mais uma vez sem o nome do usuário).
*Versão do meu bash: 4.3.11(1)-release-(x86_64-pc-linux-gnu)*
Desde já agradeço a ajuda de todos.
Loading...