1 votes

Convertir un script ruby en un script bash

J'ai besoin de transformer ce ruby script en bash pour i3 sur Ubuntu :

#!/usr/bin/env ruby

sink =  %x`pacmd list-sinks | grep -e 'name:' -e 'index:' -e 'active'`

er = /\* index: ([0-9])/

er.match sink

if $1 == "1"
    print 'usb'
else 
    print 'mic'
end

Le script doit être utilisé pour i3block et affiché sur i3bar. Par exemple, le script suivant affiche le résultat sur i3block, mais je ne comprends pas comment il le fait.

#!/bin/bash

BAT=$(acpi -b | grep -E -o '[0-9][0-9]?%')

echo "BAT: $BAT"

exit 0

Merci de votre aide !

3voto

sleepyhead Points 411
#!/bin/bash
sink=$(pacmd list-sinks | grep '* index:')
if [[ "${sink:11:11}" -eq "1" ]]
then
    echo 'usb'
else
    echo 'mic'
fi

Cela revient à faire beaucoup de suppositions, car vous n'avez pas donné beaucoup d'explications sur le script ruby que vous avez collé et sur l'objectif réel.

Ce script bash script effectue un grep sur la sortie de la liste des puits de pulseaudo, où l'index est précédé d'un *. Ensuite, à partir de cette ligne, le 11ème caractère est vérifié. S'il s'agit d'un 1, l'USB s'affiche, sinon MIC.

Comme nous l'avons dit, cela suppose beaucoup de choses et ce type de programmation peut tourner mal s'il y a d'autres index en jeu, ou si vous voulez le nom de l'appareil...

Je ne connais pas i3bar ou i3blocks, mais il est possible que vous deviez définir un intervalle dans i3blocks ou envelopper le script dans une boucle while, parce qu'un script s'exécute, produit quelque chose et se termine, donc quelque chose doit continuellement le déclencher. La façon dont vous le faites est spécifique à l'i3, dont je ne sais rien. En me basant sur les pages de manuel, voici ce que j'essaierais de faire en premier lieu

[pulse]
command=/usr/local/bin/check_pulse.sh
interval=15

http://manpages.ubuntu.com/manpages/bionic/man1/i3blocks.1.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X