В bash я часто запускаю программы awk со многими предустановленными переменными. В большинстве случаев я использую одинаковые имена переменных как в bash, так и в awk, поэтому я вызываю awk следующим образом:
awk -v var1="$var1" -v var2="$var2" -v var3="$var3" ....... '
# awk code
'
Это становится немного утомительно, когда мне нужно набрать много имен переменных. В идеале я хотел бы иметь возможность запустить что-то вроде следующего:
$(awkline var1 var2 var3 ......) '
# awk code
'
где вывод команды "awkline" - правильный формат команды awk. Например, программа "awkline" может выглядеть так:
#!/bin/bash
line="awk"
for i in $*; do line="$line -v $i="'"$'"$i"'"'; done
echo $line
Если я затем запустил "awkline ab c", я получу то, что ожидаю:
awk -v a="$a" -v b="$b" -v c="$c"
Однако, если я попытаюсь выполнить команду, подобную $(awkline abc), значение переменной a внутри awk становится (буквально включая кавычки) «$ a», а не значением a, как мне бы хотелось. Как заменить все вхождения, например, $ a, значением переменной a, чтобы я мог запустить команду awkline?