Estou acostumado alsa
a mexer no volume de um alto-falante Bluetooth que conectei. É uma configuração de 1 alto-falante; apenas algo para fornecer algum contexto.
Posso 'obter' a configuração de volume via CLI da seguinte maneira:
$ amixer sget Master
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 22938 [35%] [on]
Front Right: Playback 22938 [35%] [on]
Posso 'definir' o volume pela CLI da seguinte maneira:
$ amixer sset Master 50%
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 32768 [50%] [on]
Front Right: Playback 32768 [50%] [on]
Não preciso de toda essa verbosidade , então decidi criar uma função e dois aliases no meu ~/.bashrc
arquivo para reduzir isso. A função não está funcionando como eu esperava:
Da CLI, isso funciona bem:
$ amixer sget Master | awk -F"[][]" '/Right:/ { print $2 }'
35%
Mas quando coloco isso na minha declaração de função em ~/.bashrc
, funciona de forma diferente :
# functions & aliases for alsa mixer/volume control
function vol-get() {
amixer sget Master | awk -F"[][]" '/Left:/ { print $2 }'
}
export -f vol-get
alias vol-up='amixer sset Master 5%+ > /dev/null && vol-get'
alias vol-dn='amixer sset Master 5%- > /dev/null && vol-get'
Reler ~/.bashrc
e executar a vol-get
função produz o seguinte:
$ . ~/.bashrc
$ vol-get
Front Left: Playback 22938 [35%] [on]
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ?? what happened here ??
$ vol-up
Front Left: Playback 26215 [40%] [on]
$
Então - estou perto , mas não entendo por que meu | awk ...
se comporta de forma diferente dentro da função do que na linha de comando. Alguém pode explicar e corrigir isso?
Edições para respostas a algumas das perguntas levantadas nos comentários:
EDIÇÃO #1:
$ command -V vol-get
vol-get is a function
vol-get ()
{
amixer sget Master | awk -F"[][]" '/Left:/ { print $2 }'
}
$ awk --version
awk: not an option: --version
$ man awk
# reveals that I am actually calling `mawk`, Version 1.3.4
EDIÇÃO #2:
RE: caracteres não imprimíveis; observe que este é um c&p parcial da saída (ou seja, literalmente):
$ cat -vet ~/.bashrc
...
function vol-get() {$
amixer sget Master | awk -F'[][]' '/Left:/ { print $2 }'$
}$
...
Esta é uma resposta pela metade, porque não tenho certeza da causa raiz:
Na definição da função, substituindo
com
Corrige o problema do OP, relatando apenas o valor
50%
. Não consegui reproduzir isso por meio da minha própria caixa WSL, pois funciona com ambas as variações.O que é esperado, já que de acordo com o manual do bash :
Não há menção a
[]
isso.