Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/05/2024, à 19:48

lebossejames

bash script retour incorrect

Bonjour,

Dans mon bash script, cette commande:

 array_output_sink=($(pacmd "list-sinks" | grep -e "index: [1-9][0-9]*" | grep -e "[0-9]"))
        result_settings_sink="not exist"
        echo ${#array_output_sink[@]}
        for ((i=0;i<${#array_output_sink[@]}; i++)); do
            echo ${array_output_sink[i]}
        done 

Mon tableau array_output_sink, il retourne 26 éléments (tout les noms de fichiers de mon dossier où le script bash est exécuté ./MonScript.sh) dont 2 éléments :

index:
1

Mon souhait est de pouvoir me ressortir les numéros des index liés à la list-sinks , ici il y a 1 et 29:

james@james-Dell-System-XPS-15Z:~$ pacmd "list-sinks"
2 sink(s) available.
    index: 1
	name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
	driver: <module-alsa-card.c>
	flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
	state: SUSPENDED
	suspend cause: IDLE
	priority: 9039
	volume: front-left: 29773 /  45% / -20,56 dB,   front-right: 29773 /  45% / -20,56 dB
	        balance 0,00
	base volume: 65536 / 100% / 0,00 dB
	volume steps: 65537
	muted: no
	current latency: 0,00 ms
	max request: 0 KiB
	max rewind: 0 KiB
	monitor source: 1
	sample spec: s16le 2ch 48000Hz
	channel map: front-left,front-right
	             Stéréo
	used by: 0
	linked by: 0
	configured latency: 0,00 ms; range is 0,50 .. 341,33 ms
	card: 1 <alsa_card.pci-0000_00_1b.0>
	module: 24
	properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ALC269VB Analog"
		alsa.id = "ALC269VB Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xf1c00000 irq 35"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:00:1b.0"
		sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "1c20"
		device.product.name = "6 Series/C200 Series Chipset Family High Definition Audio Controller"
		device.form_factor = "internal"
		device.string = "front:0"
		device.buffering.buffer_size = "65536"
		device.buffering.fragment_size = "32768"
		device.access_mode = "mmap+timer"
		device.profile.name = "analog-stereo"
		device.profile.description = "Stéréo analogique"
		device.description = "Audio interne Stéréo analogique"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	ports:
		analog-output-speaker: Haut-parleurs (priority 10000, latency offset 0 usec, available: unknown)
			properties:
				device.icon_name = "audio-speakers"
		analog-output-headphones: Casque audio (priority 9900, latency offset 0 usec, available: no)
			properties:
				device.icon_name = "audio-headphones"
	active port: <analog-output-speaker>
  * index: 29
	name: <bluez_sink.7C_96_D2_A4_28_D4.a2dp_sink>
	driver: <module-bluez5-device.c>
	flags: HARDWARE DECIBEL_VOLUME LATENCY 
	state: RUNNING
	suspend cause: (none)
	priority: 9050
	volume: front-left: 19660 /  30% / -31,37 dB,   front-right: 19660 /  30% / -31,37 dB
	        balance 0,00
	base volume: 65536 / 100% / 0,00 dB
	volume steps: 65537
	muted: no
	current latency: 79,22 ms
	max request: 5 KiB
	max rewind: 0 KiB
	monitor source: 30
	sample spec: s16le 2ch 44100Hz
	channel map: front-left,front-right
	             Stéréo
	used by: 3
	linked by: 4
	fixed latency: 56,93 ms
	card: 29 <bluez_card.7C_96_D2_A4_28_D4>
	module: 55
	properties:
		bluetooth.protocol = "a2dp_sink"
		device.description = "Soundcore Motion+"
		device.string = "7C:96:D2:A4:28:D4"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		device.form_factor = "headset"
		bluez.path = "/org/bluez/hci0/dev_7C_96_D2_A4_28_D4"
		bluez.class = "0x200404"
		bluez.alias = "Soundcore Motion+"
		device.icon_name = "audio-headset-bluetooth"
		device.intended_roles = "phone"
	ports:
		headset-output: Casque (priority 0, latency offset 0 usec, available: yes)
			properties:
				
	active port: <headset-output>

Merci d'avance de votre aide.

Hors ligne

#2 Le 02/05/2024, à 21:42

Watael

Re : bash script retour incorrect

salut,

c'est parce que tu utilises les guillemets à mauvais escient.
en fait, tu en mets où ça n'a pas d'importance, et tu n'en mets pas où c'est indispensable.

il faut toujours* mettre les Développements de paramètres entre guillemets. TOUJOURS !

* à moins de savoir pourquoi. wink

et donc, l'astérisque qui précède l'index de la carte en cours d'utilisation est développé, et produit ce qu'un astérisque dans le shell développe : la liste des fichiers du répertoire courant !

PS: des deux grep il y en a un de trop ! smile

EDIT:
au fait ! tu n'obtiendras pas ce que tu veux en alimentant le tableau ainsi
mais comme ça :

readarray -t array_output_sink < <(pacmd list-sinks | grep '\s\**index:')

Dernière modification par Watael (Le 02/05/2024, à 21:50)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 02/05/2024, à 22:03

lebossejames

Re : bash script retour incorrect

Watael a écrit :

salut,

c'est parce que tu utilises les guillemets à mauvais escient.
en fait, tu en mets où ça n'a pas d'importance, et tu n'en mets pas où c'est indispensable.

il faut toujours* mettre les Développements de paramètres entre guillemets. TOUJOURS !

* à moins de savoir pourquoi. wink

et donc, l'astérisque qui précède l'index de la carte en cours d'utilisation est développé, et produit ce qu'un astérisque dans le shell développe : la liste des fichiers du répertoire courant !

PS: des deux grep il y en a un de trop ! smile

EDIT:
au fait ! tu n'obtiendras pas ce que tu veux en alimentant le tableau ainsi
mais comme ça :

readarray -t array_output_sink < <(pacmd list-sinks | grep '\s\**index:')

J'ai essayé le readarray, j'obtiens ceci:

1er:index: 1
2ième:arduino chromium gimp gnome-calculator gnome-system-monitor keepassxc obs-studio pdfcrack-simosx snap-store sqlitebrowser index: 29

Il y a deux élements dans le tableau mais le deuxième contient les noms de fichiers du dossier où se trouve le script, mais chaque élément n'est pas l'entier.
hmm

Dernière modification par lebossejames (Le 02/05/2024, à 22:08)

Hors ligne

#4 Le 02/05/2024, à 22:24

Watael

Re : bash script retour incorrect

parce que tu ne mets pas de guillemets autour des Développement de paramètres* !

--
* les variables.

EDIT: illustration de mes propos :

maVar='*'
echo $maVar
fic1 fic2 ...
echo "$maVar"
*

Dernière modification par Watael (Le 02/05/2024, à 22:27)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne