将变量的值传递给另一个命令

将变量的值传递给另一个命令

我有以下命令:

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')

相关内容