У меня есть следующая команда:
usb_soundcard_sink=$(pactl list short sinks | grep "alsa_output" | awk '{ print $2 }' | tail -n1)
вывод этой команды:
alsa_output.pci-0000_00_1b.0.analog-stereo
И это еще одна команда, которая находит номер индекса:
output:
0
Но я хочу передать переменную «usb_soundcard_sink» вместо жестко закодированного значения, т.е. «alsa_output.pci-0000_00_1b.0.analog-stereo» в приведенной выше команде. Значение b'coz переменной «usb_soundcard_sink» может изменяться динамически.
Также я пробовал следующее:
var=$(pactl list short sinks | awk '$2=="$usb_soundcard_sink" {print $1}')
Но он не работает
, так как могу ли я передать значение переменной «usb_soundcard_sink» в приведенную выше команду
Я обнаружил, что это тоже работает
line=myfile.dat
f=8
s=11
echo $line | awk '{print $'$f',$'$s'}'
Здесь у меня есть файл с именем myfile.dat, связанный с awk, который выплескивает столбцы 8 и 11.
Оба MAWK (версия AWK по умолчанию Ubuntu) и GAWK читают необязательные аргументы командной строки в форме identifier=value как назначения переменных, которые выполняются сразу после выполнения операторов BEGIN:
Я предпочитаю этот метод опции -v, потому что он удерживает команду очиститель, четко разделяя параметры, которые нужно передать интерпретатору и детали программы.
Из man mawk:
Аргументы командной строки делятся на три набора: аргументы файла, аргументы назначения и пустые строки "". Назначение имеет вид var = string. Когда ARGV [i] рассматривается как возможный аргумент файла, если он пуст, он пропускается; если это аргумент присваивания, выполняется присвоение var, и я перехожу к следующему аргументу; иначе ARGV [i] открывается для ввода.Из man gawk:
Аргументы командной строки делятся на три набора: аргументы файла, аргументы назначения и пустые строки "". Назначение имеет вид var = string. Когда ARGV [i] рассматривается как возможный аргумент файла, если он пуст, он пропускается; если это аргумент присваивания, выполняется присвоение var, и я перехожу к следующему аргументу; иначе ARGV [i] открывается для ввода.