Uso de ";" no shell script [RESOLVIDO]

1. Uso de ";" no shell script [RESOLVIDO]

Clébio
juniorcl

(usa XUbuntu)

Enviado em 15/01/2019 - 22:48h

Olá pessoal.
Eu estou estudando shell script e me surgiu uma dúvida sobre o uso de ";".
Eu sei que é possível usar ";" para colocar o script em uma linha
Porém já encontrei em scripts uso de ";" em if's, for's e também em echo's, contudo não entendo qual seria o seu propósito.
Abaixo coloquei um exemplo de script.


#!/bin/bash
#

# try all word in words.txt
for word in $(cat words.txt);
do

# try to decrypt with word
echo "${word}" | gpg --passphrase-fd 0 --no-tty --decrypt somegpgfile.gpg --output somegpgfile;

# if decrypt is successfull; stop
if [ $? -eq 0 ];
then

echo "GPG passphrase is: ${word}";
exit 0;

fi

done;

exit 1;


Desde já agradeço.


  


2. Re: Uso de ";" no shell script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 15/01/2019 - 23:03h

Não sou muito entendedor de shell, mas o que eu entendo sobre o ponto e virgula é.

O ponto e virgula serve para findar um bloco de comandos, então não importa se vc vai colocar algum outro comando depois do ponto e virgula, o que importa é que aquele bloco foi finalizado .

Então ponto e virgula sem preceder outro comando é opcional.

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



3. Re: Uso de ";" no shell script [RESOLVIDO]

Stanislaus K
StanislausK

(usa FreeBSD)

Enviado em 15/01/2019 - 23:37h

Ola,

"Single semicolons at the end of a line are superfluous, since the newline is also a command separator. case specifically needs double semicolons at the end of the last command in each pattern block"
https://stackoverflow.com/questions/7507038/semicolons-superfluous-at-the-end-of-a-line-in-shell-scr...

"Semicolon is used to separate different commands on one line. Useful when working at an interactive terminal, not from a script"
https://www.quora.com/What-is-the-difference-between-ending-a-bash-script-line-with-a-newline-char-a...

"Commands separated by a ‘;’ or a newline are executed sequentially; the shell waits for each command to terminate in turn. The return status is the exit status of the last command executed."
https://gerardnico.com/lang/bash/semicolon



4. Re: Uso de

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 16/01/2019 - 09:28h

tyudemetry escreveu:

Olá pessoal.
Eu estou estudando shell script e me surgiu uma dúvida sobre o uso de ";".
Eu sei que é possível usar ";" para colocar o script em uma linha
Porém já encontrei em scripts uso de ";" em if's, for's e também em echo's, contudo não entendo qual seria o seu propósito.
Abaixo coloquei um exemplo de script.


#!/bin/bash
#

# try all word in words.txt
for word in $(cat words.txt);
do

# try to decrypt with word
echo "${word}" | gpg --passphrase-fd 0 --no-tty --decrypt somegpgfile.gpg --output somegpgfile;

# if decrypt is successfull; stop
if [ $? -eq 0 ];
then

echo "GPG passphrase is: ${word}";
exit 0;

fi

done;

exit 1;


Desde já agradeço.


Oi.

Da mesma forma que o "\n", o ";" delimita comandos no shell script ( bash ).

Visto que o caractere de nova linha e ";" fazem a delimitação, se estiver usando apenas um comando por linha, o ";" é opcional.

Porém, se precisar usar mais de um comando na mesma linha, é necessário utilizar o ";" para separar um comando do outro.

Por exemplo, esses códigos são equivalentes:


echo paulo > nome.txt
wc -c nome.txt



echo paulo > nome.txt ; wc -c nome.txt


No caso do "if", ele também é um comando... E utiliza a mesma ideia para delimitação de comandos.

Você pode ver um pequeno help do "if" usando esse comando no terminal:


help if


Sabendo disso, no "if" do seu exemplo, os ";" são todos opcionais. Por exemplo:


#!/bin/bash

ls -l > /dev/null

if [ $? -eq 0 ]
then

echo "texto"
exit 0
fi


Mas, se você fosse usar o "then" na mesma linha do "if", seria necessário usar um ";" assim:


#!/bin/bash

ls -l > /dev/null

if [ $? -eq 0 ] ; then

echo "texto"
exit 0

fi


Apesar de ser opcional, eu considero uma boa prática e sempre utilizo o ";" para delimitar comandos em scripts.

Nesse artigo que eu escrevi têm mais um pouco sobre shell script: https://www.vivaolinux.com.br/artigo/Programacao-com-Shell-Script



5. Re: Uso de ";" no shell script [RESOLVIDO]

Clébio
juniorcl

(usa XUbuntu)

Enviado em 16/01/2019 - 11:24h

Muito obrigado pela ajuda pessoal.
Ainda estou estudando shell script mas estou gostando bastante de aprendê-la.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts