#1 Le 02/05/2024, à 18: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, à 20: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.
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 !
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, à 20:50)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 02/05/2024, à 21:03
- lebossejames
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.
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 !
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.
Dernière modification par lebossejames (Le 02/05/2024, à 21:08)
Hors ligne
#4 Le 02/05/2024, à 21: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, à 21:27)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne