Em geral, não é uma boa ideia incorporar um comando a uma variável e depois executar a variável. Você poderia usar uma função para isso.
Primeiro, vamos explicar o que está acontecendo e por que você está recebendo um erro. É tudo sobre a ordem de avaliação.
add_Area="awk -F\t '{$1="area" FS $1;}1' OFS='\t'"
As aspas duplas em torno da string permitem que o shell avalie as variáveis. Nesse caso, o $1
é visto e processado pelo shell e é provável que seja não definido. Além disso, você está tentando colocar aspas duplas entre aspas duplas, o que na verdade significa que a seção com aspas duplas é interrompida e reiniciada um pouco mais tarde. A atribuição resultante se torna isso:
add_Area="awk -F\t '{=area FS ;}1' OFS='\t'"
Quando você tenta e executa isso na próxima linha, ele falha porque não está sintaticamente correto.
Agora vamos ver uma maneira de resolver o que eu acho que você está tentando alcançar.
# Declare a function
add_Area() {
awk -F$'\t' 'BEGIN { OFS = FS } { $1 = "area" FS $1 } 1'
}
# Use the function as if it were a normal command
Output="$( echo "$some_csv_var" | add_Area )"
# Later
echo "$Output"