Opções nao estao sendo ativadas no shell script [RESOLVIDO]

1. Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Jean César
dark777

(usa Linux Mint)

Enviado em 28/05/2023 - 01:07h

Estou fazendo o script:

#!/usr/bin/bash

## origin: https://www.vivaolinux.com.br/script/Abrir-arquivos-em-nova-aba-no-Firefox
##
### Se quizer que o novo link abra em nova janela digite New-Window; Se quizer em novo aba, digite New-Tab entre as apas abaixo. O padrão é New-Tab.

N=0
J=0
A=0
L=0

NEWTAB="--new-tab"

WINDOW="--new-window"

LYNX="$(which lynx)"

FIREFOX="$(which firefox)"

## Opções de --new-tab e --new-window OK
CHROME="$(which google-chrome)"

## URL default
HOME_PAGE="http://www.vivaolinux.com.br"

function help() {
echo -e "\n\e[1;31mUsage\033[1;32m: \033[1;34m${0} \033[1;35m(\033[1;32m-f \033[1;31m| \033[1;32m-g\033[1;35m) (\033[1;32m-t \033[1;31m| \033[1;32m-w\033[1;35m) (\033[1;32m--url\033[1;35m)\033[1;34m=\033[1;37m\"\033[1;32mwww.vivaolinux.com.br\033[1;37m\"
\n\033[1;35m(\033[1;32m-f\033[1;35m) \033[1;34m= \033[1;37mpara abrir com o mozilla-firefox
\033[1;35m(\033[1;32m-g \033[1;31m\033[1;35m) \033[1;34m= \033[1;37mpara abrir com o google-chrome
\033[1;35m(\033[1;32m-t\033[1;35m) \033[1;34m= \033[1;37mpara abrir uma nova aba no navegador aberto
\033[1;35m(\033[1;32m-w\033[1;35m) \033[1;34m= \033[1;37mpara abrir uma nova janela do navegador
\033[1;35m(\033[1;32m--url\033[1;35m) \033[1;34m= \033[1;37m\"\033[1;32mwww.vivaolinux.com.br\033[1;37m\"\n"

exit 0
}

OPTS=$(getopt -a -n ${0} -o f,g,t,w,l,h --long url:,help -- "$@")

eval set -- "${OPTS}"

while :; do
case "$1" in
-f)
N=1
NAVEGADOR="${FIREFOX}"
shift 2
;;

-l)
N=1
NAVEGADOR="${LYNX}"
shift 2
;;

-g)
N=1
NAVEGADOR="${CHROME}"
shift 2
;;

-t)
A=1

TAB="${NEWTAB}"

TAB_KTERMINAL="konsole --new-tab -- bash -c"

TAB_GTERMINAL="gnome-terminal --tab -- bash -c"

shift 2
;;

-w)
J=1
JANELA="${WINDOW}"
shift 2
;;

--url)
L=1
URL="${2}"
shift 2
;;

-h | --help)
help
shift
;;

--) #Skip
shift
break
;;

esac
done

echo "(($N && $A)) && ${NAVEGADOR} ${TAB} ${HOME_PAGE}"
echo
echo "(($N && $J)) && ${NAVEGADOR} ${JANELA} ${HOME_PAGE}"
echo
echo "(($N && $A && $L)) && ${NAVEGADOR} ${TAB} ${URL}"
echo
echo "(($N && $J && $L)) && ${NAVEGADOR} ${JANELA} ${URL}"
echo
echo "(($N && $A && -n $(which konsole))) && ${TAB_KTERMINAL} ${NAVEGADOR} ${HOME_PAGE}"
echo
echo "(($N && $A && -n $(which gnome-terminal))) && ${TAB_GTERMINAL} ${NAVEGADOR} ${HOME_PAGE}"
echo
echo "(($N && $A && $L && -n $(which konsole))) && ${TAB_KTERMINAL} ${NAVEGADOR} ${URL}"
echo
echo "(($N && $A && $L && -n $(which gnome-terminal))) && ${TAB_GTERMINAL} ${NAVEGADOR} ${URL}"
echo


E ao executar ./url -g -t -url=google.com

((1 && 0)) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0)) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0 && 1)) && /usr/bin/google-chrome google.com

((1 && 0 && 1)) && /usr/bin/google-chrome google.com

((1 && 0 && -n )) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0 && -n /usr/bin/gnome-terminal)) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0 && 1 && -n )) && /usr/bin/google-chrome google.com

((1 && 0 && 1 && -n /usr/bin/gnome-terminal)) && /usr/bin/google-chrome google.com

Ele não esta ativando a opção de mostrar em nova aba.

Ele deveria mostrar apenas:

((1 && 1 && 1)) && /usr/bin/google-chrome --new-tab google.com


Se eu executar ./url -g -w -url=google.com

((1 && 0)) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0)) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0 && 1)) && /usr/bin/google-chrome google.com

((1 && 0 && 1)) && /usr/bin/google-chrome google.com

((1 && 0 && -n )) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0 && -n /usr/bin/gnome-terminal)) && /usr/bin/google-chrome http://www.vivaolinux.com.br

((1 && 0 && 1 && -n )) && /usr/bin/google-chrome google.com

((1 && 0 && 1 && -n /usr/bin/gnome-terminal)) && /usr/bin/google-chrome google.com

Ele não esta mostrando a opção de abrir uma noja janela.

Ele deveria mostrar apenas:

((1 && 1 && 1)) && /usr/bin/google-chrome --new-window google.com


E outra questão que estou tentando entender é como fazer para que nao fique esse monta de linha abrindo várias instancias do navegador.
wiki.anon


  


2. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 28/05/2023 - 01:07h

Olá! Parece que você está enfrentando problemas em seu script shell com as opções de abertura de novas abas e novas janelas. Vou te ajudar a resolver isso.

Primeiro, sugiro modificar o trecho onde você define as variáveis `N`,`A`,`J` e `L` de números para valores booleanos:

```bash
N=false
J=false
A=false
L=false
```

E em seguida, modificar as verificações feitas no loop `while` para atribuir os valores `true` ou `false`:

```bash
-f)
N=true
NAVEGADOR="${FIREFOX}"
shift
;;

-l)
N=true
NAVEGADOR="${LYNX}"
shift
;;

-g)
N=true
NAVEGADOR="${CHROME}"
shift
;;

-t)
A=true
TAB="${NEWTAB}"
shift
;;

-w)
J=true
JANELA="${WINDOW}"
shift
;;

--url)
L=true
URL="${2}"
shift
;;
```

Em seguida, substitua as verificações no final do seu arquivo por declarações `if`:

```bash
if [[ $N == true && $A == true && $L == true ]]; then


3. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Jean César
dark777

(usa Linux Mint)

Enviado em 30/05/2023 - 10:38h


alexabolada escreveu:

Olá! Parece que você está enfrentando problemas em seu script shell com as opções de abertura de novas abas e novas janelas. Vou te ajudar a resolver isso.

Primeiro, sugiro modificar o trecho onde você define as variáveis `N`,`A`,`J` e `L` de números para valores booleanos:

```bash
N=false
J=false
A=false
L=false
```

E em seguida, modificar as verificações feitas no loop `while` para atribuir os valores `true` ou `false`:

```bash
-f)
N=true
NAVEGADOR="${FIREFOX}"
shift
;;

-l)
N=true
NAVEGADOR="${LYNX}"
shift
;;

-g)
N=true
NAVEGADOR="${CHROME}"
shift
;;

-t)
A=true
TAB="${NEWTAB}"
shift
;;

-w)
J=true
JANELA="${WINDOW}"
shift
;;

--url)
L=true
URL="${2}"
shift
;;
```

Em seguida, substitua as verificações no final do seu arquivo por declarações `if`:

```bash
if [[ $N == true && $A == true && $L == true ]]; then


O código em sí ja esta fazendo isso quero entender por que ele não esta ativando as opçoes?

wiki.anon


4. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 30/05/2023 - 10:39h

Olá, wiki.anon!

Vamos analisar o código e entender o motivo das opções não estarem sendo ativadas.

Você mencionou que o código já está fazendo verificações com valores booleanos na declaração do loop `while`. Porém, vou te mostrar uma versão alterada do trecho do loop `while` que deve ser melhor para lidar com as opções booleanas:

```bash
while [ "$#" -gt 0 ]; do
case "$1" in
-f)
N=true
NAVEGADOR="${FIREFOX}"
shift
;;
-l)
N=true
NAVEGADOR="${LYNX}"
shift
;;
-g)
N=true
NAVEGADOR="${CHROME}"
shift
;;
-t)
A=true
shift
;;
-w)
J=true
shift
;;
--url)
L=true
URL="${2}"
shift 2
;;
*)
break
;;
esac
done
```

Note que alguns ajustes foram feitos:

- Removi a atribuição das variáveis `TAB` e `JANELA`, pois elas não eram utilizadas no seu exemplo.
- No caso da opção `--url`, mudei o `shift` para `shift 2` para avan


5. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Jean César
dark777

(usa Linux Mint)

Enviado em 30/05/2023 - 11:08h


alexabolada escreveu:

Olá, wiki.anon!

Vamos analisar o código e entender o motivo das opções não estarem sendo ativadas.

Você mencionou que o código já está fazendo verificações com valores booleanos na declaração do loop `while`. Porém, vou te mostrar uma versão alterada do trecho do loop `while` que deve ser melhor para lidar com as opções booleanas:

```bash
while [ "$#" -gt 0 ]; do
case "$1" in
-f)
N=true
NAVEGADOR="${FIREFOX}"
shift
;;
-l)
N=true
NAVEGADOR="${LYNX}"
shift
;;
-g)
N=true
NAVEGADOR="${CHROME}"
shift
;;
-t)
A=true
shift
;;
-w)
J=true
shift
;;
--url)
L=true
URL="${2}"
shift 2
;;
*)
break
;;
esac
done
```

Note que alguns ajustes foram feitos:

- Removi a atribuição das variáveis `TAB` e `JANELA`, pois elas não eram utilizadas no seu exemplo.
- No caso da opção `--url`, mudei o `shift` para `shift 2` para avan



Testei o seu exemplo e agora fica em loop infinito
wiki.anon


6. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 30/05/2023 - 11:09h

Olá, wiki.anon!

Peço desculpas pela confusão causada pelo exemplo que eu forneci. Vamos corrigir a situação do loop infinito. Por favor, tente alterar o trecho do loop `while` da seguinte forma:

```bash
while [ "$#" -gt 0 ]; do
case "$1" in
-f)
N=true
NAVEGADOR="${FIREFOX}"
shift
;;
-l)
N=true
NAVEGADOR="${LYNX}"
shift
;;
-g)
N=true
NAVEGADOR="${CHROME}"
shift
;;
-t)
A=true
shift
;;
-w)
J=true
shift
;;
--url)
L=true
URL="${2}"
shift 2
;;
*)
break
;;
esac
done
```

Se você ainda estiver enfrentando o loop infinito, por favor, compartilhe mais informações sobre o resto do seu código e as condições específicas sob as quais está ocorrendo o problema. Isso ajudará a identificarmos a causa e fornecer uma solução mais adequada.


7. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Jean César
dark777

(usa Linux Mint)

Enviado em 30/05/2023 - 18:45h


alexabolada escreveu:

Olá, wiki.anon!

Peço desculpas pela confusão causada pelo exemplo que eu forneci. Vamos corrigir a situação do loop infinito. Por favor, tente alterar o trecho do loop `while` da seguinte forma:

```bash
while [ "$#" -gt 0 ]; do
case "$1" in
-f)
N=true
NAVEGADOR="${FIREFOX}"
shift
;;
-l)
N=true
NAVEGADOR="${LYNX}"
shift
;;
-g)
N=true
NAVEGADOR="${CHROME}"
shift
;;
-t)
A=true
shift
;;
-w)
J=true
shift
;;
--url)
L=true
URL="${2}"
shift 2
;;
*)
break
;;
esac
done
```

Se você ainda estiver enfrentando o loop infinito, por favor, compartilhe mais informações sobre o resto do seu código e as condições específicas sob as quais está ocorrendo o problema. Isso ajudará a identificarmos a causa e fornecer uma solução mais adequada.


Ainda estou enfrentando loop infinito

wiki.anon


8. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 30/05/2023 - 18:45h

Olá, wiki.anon!

Sinto muito pelo inconveniente que você está enfrentando com o loop infinito. Para ajudá-lo melhor, precisarei de informações adicionais sobre seu código e contexto em que o problema está ocorrendo.

Você poderia compartilhar o código completo e descrever o comportamento esperado do seu script? Seria útil sabermos também quais são os argumentos que você está passando ao executar o script e se há alguma mensagem de erro ou output específico que ocorre antes do loop infinito começar.

Com essas informações em mãos, poderei analisar melhor o problema e fornecer uma solução mais adequada para o seu caso.


9. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Jean César
dark777

(usa Linux Mint)

Enviado em 30/05/2023 - 19:10h


alexabolada escreveu:

Olá, wiki.anon!

Sinto muito pelo inconveniente que você está enfrentando com o loop infinito. Para ajudá-lo melhor, precisarei de informações adicionais sobre seu código e contexto em que o problema está ocorrendo.

Você poderia compartilhar o código completo e descrever o comportamento esperado do seu script? Seria útil sabermos também quais são os argumentos que você está passando ao executar o script e se há alguma mensagem de erro ou output específico que ocorre antes do loop infinito começar.

Com essas informações em mãos, poderei analisar melhor o problema e fornecer uma solução mais adequada para o seu caso.


O código completo esta na primeira postagem.

O código ao digitar as opçoes:

./url -f -t --url="site.com.br"
./url -f -w --url="site.com.br"
./url -g -t --url="site.com.br"
./url -g -w --url="site.com.br"


ele mostre:

firefox --new-tab site.com.br
firefox --new-window site.com.br
google-chrome --new-tab site.com.br
google-chrome --new-window site.com.br


Quendo executo:


-t e -w


Ele não esta mostrando e ativando as opçoes:

--new-tab
--new-window



wiki.anon


10. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 30/05/2023 - 19:11h

Olá, wiki.anon!

Obrigada por compartilhar mais informações sobre o seu problema. Vamos analisar o que pode estar acontecendo com o seu código.

Pelo que entendi, seu script deve executar as seguintes ações: abrir uma nova janela ou aba no Firefox ou Google Chrome com a URL fornecida.

No entanto, ele não está executando as opções `-t` e `-w` corretamente, causando um loop infinito.

Também entendi que os comandos que você deseja executar são:

firefox --new-tab site.com.br
firefox --new-window site.com.br
google-chrome --new-tab site.com.br
google-chrome --new-window site.com.br

Vamos tentar analisar seu script:

Se possível, poste novamente seu script completo para que possamos entender melhor seu código e identificar a causa do problema. Isso permitirá oferecer uma solução mais concreta para corrigir esse comportamento inesperado e resolver o loop infinito.

Aguardo suas informações adicionais para prosseguirmos na solução do problema.

Abraços,
Alexa Bolada


11. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Jean César
dark777

(usa Linux Mint)

Enviado em 30/05/2023 - 19:21h


alexabolada escreveu:

Olá, wiki.anon!

Obrigada por compartilhar mais informações sobre o seu problema. Vamos analisar o que pode estar acontecendo com o seu código.

Pelo que entendi, seu script deve executar as seguintes ações: abrir uma nova janela ou aba no Firefox ou Google Chrome com a URL fornecida.

No entanto, ele não está executando as opções `-t` e `-w` corretamente, causando um loop infinito.

Também entendi que os comandos que você deseja executar são:

firefox --new-tab site.com.br
firefox --new-window site.com.br
google-chrome --new-tab site.com.br
google-chrome --new-window site.com.br

Vamos tentar analisar seu script:

Se possível, poste novamente seu script completo para que possamos entender melhor seu código e identificar a causa do problema. Isso permitirá oferecer uma solução mais concreta para corrigir esse comportamento inesperado e resolver o loop infinito.

Aguardo suas informações adicionais para prosseguirmos na solução do problema.

Abraços,
Alexa Bolada


[code]
#!/usr/bin/bash

## origin: https://www.vivaolinux.com.br/script/Abrir-arquivos-em-nova-aba-no-Firefox
##
### Se quizer que o novo link abra em nova janela digite New-Window; Se quizer em novo aba, digite New-Tab entre as apas abaixo. O padrão é New-Tab.

N=0
J=0
A=0
L=0

NEWTAB="--new-tab"

WINDOW="--new-window"

LYNX="$(which lynx)"

FIREFOX="$(which firefox)"

## Opções de --new-tab e --new-window OK
CHROME="$(which google-chrome)"

## URL default
HOME_PAGE="http://www.vivaolinux.com.br"

function help() {
echo -e "\n\e[1;31mUsage\033[1;32m: \033[1;34m${0} \033[1;35m(\033[1;32m-f \033[1;31m| \033[1;32m-g\033[1;35m) (\033[1;32m-t \033[1;31m| \033[1;32m-w\033[1;35m) (\033[1;32m--url\033[1;35m)\033[1;34m=\033[1;37m\"\033[1;32mwww.vivaolinux.com.br\033[1;37m\"
\n\033[1;35m(\033[1;32m-f\033[1;35m) \033[1;34m= \033[1;37mpara abrir com o mozilla-firefox
\033[1;35m(\033[1;32m-g \033[1;31m\033[1;35m) \033[1;34m= \033[1;37mpara abrir com o google-chrome
\033[1;35m(\033[1;32m-t\033[1;35m) \033[1;34m= \033[1;37mpara abrir uma nova aba no navegador aberto
\033[1;35m(\033[1;32m-w\033[1;35m) \033[1;34m= \033[1;37mpara abrir uma nova janela do navegador
\033[1;35m(\033[1;32m--url\033[1;35m) \033[1;34m= \033[1;37m\"\033[1;32mwww.vivaolinux.com.br\033[1;37m\"\n"

exit 0
}

OPTS=$(getopt -a -n ${0} -o f,g,t,w,l,h --long url:,help -- "$@")

eval set -- "${OPTS}"

while :; do
case "$1" in
-f)
N=1
NAVEGADOR="${FIREFOX}"
shift 2
;;

-l)
N=1
NAVEGADOR="${LYNX}"
shift 2
;;

-g)
N=1
NAVEGADOR="${CHROME}"
shift 2
;;

-t)
A=1

TAB="${NEWTAB}"

TAB_KTERMINAL="konsole --new-tab -- bash -c"

TAB_GTERMINAL="gnome-terminal --tab -- bash -c"

shift 2
;;

-w)
J=1
JANELA="${WINDOW}"
shift 2
;;

--url)
L=1
URL="${2}"
shift 2
;;

-h | --help)
help
shift
;;

--) #Skip
shift
break
;;

esac
done

echo "(($N && $A)) && ${NAVEGADOR} ${TAB} ${HOME_PAGE}"
echo
echo "(($N && $J)) && ${NAVEGADOR} ${JANELA} ${HOME_PAGE}"
echo
echo "(($N && $A && $L)) && ${NAVEGADOR} ${TAB} ${URL}"
echo
echo "(($N && $J && $L)) && ${NAVEGADOR} ${JANELA} ${URL}"
echo
echo "(($N && $A && -n $(which konsole))) && ${TAB_KTERMINAL} ${NAVEGADOR} ${HOME_PAGE}"
echo
echo "(($N && $A && -n $(which gnome-terminal))) && ${TAB_GTERMINAL} ${NAVEGADOR} ${HOME_PAGE}"
echo
echo "(($N && $A && $L && -n $(which konsole))) && ${TAB_KTERMINAL} ${NAVEGADOR} ${URL}"
echo
echo "(($N && $A && $L && -n $(which gnome-terminal))) && ${TAB_GTERMINAL} ${NAVEGADOR} ${URL}"
echo
[code]

wiki.anon


12. Re: Opções nao estao sendo ativadas no shell script [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 30/05/2023 - 19:22h

Olá, wiki.anon!

Obrigada por fornecer o código completo do seu script. Identifiquei o problema que está causando o loop infinito no seu script. No momento, seu script está apenas imprimindo os comandos a serem executados, ao invés de realmente executá-los. Vamos corrigir isso.

Substitua todas as linhas que começam com `echo` por `[b]eval[\/b]`. Por exemplo, a linha:

````
echo "(($N && $A)) && ${NAVEGADOR} ${TAB} ${HOME_PAGE}"
````

Deve ser substituída por:

````
eval "(($N && $A)) && ${NAVEGADOR} ${TAB} ${HOME_PAGE}"
````

Faça isso para todas as linhas que começam com `echo` no seu script. Após realizar essas alterações, seu script deve funcionar corretamente, abrindo uma nova aba ou janela no navegador com a URL fornecida e não causando mais o loop infinito.

Se você ainda enfrentar problemas, por favor, compartilhe-os conosco. Estou aqui para ajudar!

Abraços,
Alexa Bolada



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts