Primeiro: Por que você está mudando de diretório para root /? Seus arquivos estão localizados lá?
Remova os qoutes ".." do seu comando. Então parece que
% bl0ck_qu0te% Verifique se você instalou o pacote vorbis-tools
Estou trabalhando em um script bash que é executado em um loop infinito de 1 segundo, em que se detectar que o computador está conectado à energia CA, ele reproduzirá o arquivo plugin.ogg
com ogg123
e, se não for plugado, ele reproduz um arquivo silencioso Silence.ogg
. No entanto, tenho alguns problemas. Em primeiro lugar, parece não mais loop (provavelmente um efeito colateral do wait
eu tive que jogar em ordem para evitar um som de entrada do carregador de loop após a primeira detecção. Em segundo lugar, não parece querer mudar para o /
directory e, portanto, (não tenho certeza se devido ao erro /
ou outra coisa) não consegue encontrar os arquivos para jogar. Por favor, ajude a corrigir isso, obrigado!
#!/bin/bash
"cd /"
while true
do
if on_ac_power; then
"ogg123 plugin.ogg" ## Laptop on power
else
"ogg123 Silence.ogg" ## Laptop on battery
fi
sleep 10 ## wait 10 sec before repeating
done
Saída do terminal, se executada enquanto o computador está desconectado:
/home/brenden_mcfarling_live/Desktop/ac0.sh: line 3: cd /: No such
file or directory
/home/brenden_mcfarling_live/Desktop/ac0.sh: line 10: ogg123
Silence.ogg: command not found
Saída do terminal quando executado enquanto conectado:
/home/brenden_mcfarling_live/Desktop/ac0.sh: line 3: cd /: No such file or directory
/home/brenden_mcfarling_live/Desktop/ac0.sh: line 8: ogg123 plugin.ogg: command not found
Qualquer ajuda seria apreciada!
Primeiro: Por que você está mudando de diretório para root /? Seus arquivos estão localizados lá?
Remova os qoutes ".." do seu comando. Então parece que
% bl0ck_qu0te% Verifique se você instalou o pacote vorbis-tools
Como @JonnyTischbein disse : remova as aspas de seus comandos porque senão o shell tentará executar o comando literal "cd /"
, isto é, ele irá procurar por um arquivo executável chamado "cd /"
e executá-lo. Claro que não existe e você recebe bash: cd /: No such file or directory
.
O mesmo vale para "ogg123 plugin.ogg"
. Ele tentará executar o arquivo "ogg123 plugin.ogg"
, que também não existe. Dadas suas outras mensagens de erro, presumo que os arquivos * .ogg residem em /home/brenden_mcfarling_live/Desktop
(e não em /
). Assim, depois de mudar para /
, os arquivos não podem mais ser encontrados e você precisa fornecer o caminho completo.
Coloque juntos:
#!/bin/bash
cd /
while true
do
if on_ac_power; then
## Laptop on power
ogg123 /home/brenden_mcfarling_live/Desktop/plugin.ogg
else
## Laptop on battery
ogg123 /home/brenden_mcfarling_live/Desktop/Silence.ogg
fi
## wait 10 sec before repeating
sleep 10
done
Se o path-to ou filename-dos arquivos de som continham espaços, então você pode usar aspas , mas apenas em torno do nome do arquivo :
ogg123 "/home/brenden_mcfarling_live/Desk Top/Very silent sound.ogg"
Você também pode querer dar uma olhada em esta pergunta (e sua resposta) em Unix & amp; Linux . Lá eles dizem como capturar imediatamente o evento de conectar / desconectar o adaptador AC para que você não precise enquete a cada 10 segundos, mas ser acionado.
Eu admito, é um pouco complicado à primeira vista, mas a ideia é:
/etc/udev/rules.d
que digam "quando conectado, execute script1.sh" e "quando desconectado e execute script2.sh"