Não conseguimos carregar os anúncios.Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
2. Re: uso do se no script
alexaboladausa Debian
Post recolhido
Enviado em 07/05/2024 - 16:27h
Para executar o script, você pode utilizar o comando bash seguido do nome do arquivo do script. Por exemplo, se o script estiver salvo com o nome script.sh, você pode executá-lo com o seguinte comando:
bash script.sh
Lembrando que o script verifica se o usuário deseja abrir o arquivo de receita e, caso a resposta seja "s", o arquivo /tmp/receitas.txt será aberto no editor de texto Gedit. Em seguida, uma mensagem será exibida após o fechamento do arquivo.
3. Re: uso do se no script
aguamoleusa KUbuntu
Post recolhido
Enviado em 08/05/2024 - 12:29h
Aqui @minions aqui esta funcionando, adapte ao seu caso:
#!/bin/bash
set -x
read -p "Abrir o arquivo de receita agora? (s/n): " resposta
if [[ "$resposta" == "s" ]]; then
kate ./minions.sh 2> /dev/null &
kate_pid=$!
while [[ "$(ps -p $kate_pid | wc -l)" != "1" ]]
do
sleep 1
done
fi
echo "
Só mostra isso depois que o arquivo /tmp/receitas.txt for fechado pelo usuário...
"
exit 0
4. Re: uso do se no script
removidousa Nenhuma
Post recolhido
Enviado em 08/05/2024 - 15:31h
aguamole escreveu:
Aqui @minions aqui esta funcionando, adapte ao seu caso:
#!/bin/bash
set -x
read -p "Abrir o arquivo de receita agora? (s/n): " resposta
if [[ "$resposta" == "s" ]]; then
kate ./minions.sh 2> /dev/null &
kate_pid=$!
while [[ "$(ps -p $kate_pid | wc -l)" != "1" ]]
do
sleep 1
done
fi
echo "
Só mostra isso depois que o arquivo /tmp/receitas.txt for fechado pelo usuário...
"
exit 0
Essa verificação de processo do editor de texto será que pode entrar em loop infinito?
while [[ "$(ps -p $kate_pid | wc -l)" != "1" ]]
do
sleep 1
done
---------------------------------------------------------
Camarão que dorme, acaba na empada!
5. Re: uso do se no script
aguamoleusa KUbuntu
Post recolhido
Enviado em 08/05/2024 - 17:16h
Sim, vai entrar em um loop infinito cujo só vai ser encerrado se a condição do while for satisfeita(o comando passado deve ser igual a 1), essa condição é se o processo do kate esta ou não aberto, se o processo do kate encerrar a condição será satisfeita(dará igual a 1) e o while encerra a sua execução infinita.
O correto seria usar o comando wait no lugar desse while, mas o wait não funciono no kate então não deve funcionar no seu gedit também, mas se quiser tentar com o comando wait. O que acontece é que o kate por alguma razão passa para o shell que ele foi concluído mesmo ele estando aberto, é a programação da galera dos editores.
6. Re: uso do se no script
msoliverusa Debian
Post recolhido
Enviado em 08/05/2024 - 19:23h
Minions escreveu:
clear
read -p "Abrir o arquivo de receita agora? (s/n): " resposta
if [[ "$resposta" == "s" ]] ; then
gedit /tmp/receitas.txt 2> /dev/null
fi
echo "
Só mostra isso depois que o arquivo /tmp/receitas.txt for fechado pelo usuário...
"
exit 0
Esta mostrando o aviso mesmo com o arquivo aberto.
Se tiver varios processo ativo do editor de texto não funciona. Vai cai no echo -e "\nfechou ${arq}"
Ex: Na foto tem 2 gedit abertos, ai cai no "fechou ${arq}" mesmo sem vc fecha o arquivo ${arq} .
Não tem como matar só o arquivo sem matar o editor de texto?
9. Re: uso do se no script
aguamoleusa KUbuntu
Post recolhido
Enviado em 08/05/2024 - 23:45h
Rapais, talvez vc tenha que escrever e chamar um programa externo usando uma linguagem de propósito geral, sei se tem como isso somente com utilitários do sistema não. Pode ser que tenha que chamar um programa externo para fazer essa verificação, já procuro programa externo para isso no github? programas externos, como se fosse um outro programa qualquer como o cat, less, mkdir, e tals, só que um para verificar o estado de editores de texto.
10. Re: uso do se no script
aguamoleusa KUbuntu
Post recolhido
Enviado em 08/05/2024 - 23:55h
Eu estive pensando, porque vc não usa o nano no lugar do gedit, o nano não vai dar esse problema.
Se tiver varios processo ativo do editor de texto não funciona. Vai cai no echo -e "\nfechou ${arq}"
Ex: Na foto tem 2 gedit abertos, ai cai no "fechou ${arq}" mesmo sem vc fecha o arquivo ${arq} .
Não tem como matar só o arquivo sem matar o editor de texto?
Boa noite Minions e quem mais acompanha este tópico.
Testei aqui, (Debian 15.5).
Com vários processos em execução (kwrite),
Só exibe a mensagem quando o processo que foi iniciado pelo script/linha de comando, é encerrado.
Visto que o '$pid' é passado como parâmetro para o 'wait';
Em suma, o "wait" aguarda o encerramento do processo especificado no parâmetro.
Foram abertos, um a um, clicando, abrir com, kwrite:
pgrep -a 'kwrite'
14809 kwrite [tdeinit] /home/adminq/testes_01.txt
14812 kwrite [tdeinit] /home/adminq/testes_02.txt
14816 kwrite [tdeinit] /home/adminq/testes_03.txt
14819 kwrite [tdeinit] /home/adminq/testes_04.txt
14823 kwrite [tdeinit] /home/adminq/testes_05.txt
--------------------------------------------------------------
executado na linha de comando:
kwrite testes_00.txt & pid=$!;echo -e "pid:$pid\n";jobs -l;wait $pid SAÍDA:
[1] 14827
$pid:14827
[1]+ 14827 Executando kwrite testes_00.txt &
-----------------------------------------------------------------------
executando novamente o comando:(outro terminal)
pgrep -a 'kwrite'
É incluída a linha: 14827 kwrite testes_00.txt
---------------------------------------------------------------------- Só mostrou a linha abaixo qdo fechei testes_00.txt
[1]+ Concluído kwrite testes_00.txt
----------------------------------------------------------------------
----------------------------------------------------------------------
É isso. Att.: Marcelo Oliver