我有以下命令:
usb_soundcard_sink=$(pactl list short sinks | grep "alsa_output" | awk '{ print $2 }' | tail -n1)
它找到接收器的名称:
sink_index=$(pactl list short sinks | awk -v index_number=$usb_soundcard_sink '$2==index_number {print $1}')
它找到给定接收器的索引号,即 $usb_soundcard_sink
现在在以下命令中我想将 $sink_index 作为参数传递。
我尝试使用以下命令:
volume=$(pactl list sinks | perl -000ne 'if(/#$sink_index/){/(Volume:.*)/; print "$1\n"}' | sed 's/.*\ \(.*\)%.*/\1/g')
但它不被接受$sink_index
作为参数。
那么我如何将变量的值传递sink_index
给该命令?
答案1
如果将 sink_index 存储为环境变量,则可以改用 $ENV{}:
export sink_index=$(pactl list short sinks | awk -v index_number=$usb_soundcard_sink '$2==index_number {print $1}')
volume=$(pactl list sinks | perl -000ne 'if(/#$ENV{sink_index}/){/(Volume:.*)/; print "$1\n"}' | sed 's/.*\ \(.*\)%.*/\1/g')