Existem algumas maneiras pelas quais você pode passar variáveis de ambiente para um awk script / command:
Método 1
Isso faz com que o shell expanda a variável $path1 antes de executar o comando awk .
$ echo $path1
/usr/tmp/foo/bar/baz
$ awk -F'/' 'END{a="'$path1'"; split(a,arr,FS); print(arr[5])}' /dev/null
bar
Método # 2
Passe o env. variável como uma variável awk, a .
$ awk -F '/' 'END{split(a,arr,FS); print(arr[5])}' a=$path1 /dev/null
bar
Método 3
Explicitamente passe awk uma variável usando a opção -v .
$ awk -F'/' -v a=$path1 'END{split(a,arr,FS); print(arr[5])}' /dev/null
bar
Depuração
Você pode ativar a verbosidade do shell configurando set -x antes de executar qualquer um desses comandos para ver o que está acontecendo. Aqui está o método # 2 como um exemplo:
$ set -x
$ awk -F '/' 'END{split(a,arr,FS); print(arr[5])}' a=$path1 /dev/null
+ awk -F / 'END{split(a,arr,FS); print(arr[5])}' a=/usr/tmp/foo/bar/baz /dev/null
bar
O exemplo acima mostra set -x sendo executado seguido pela linha awk. Você pode ver que, quando executada, a variável a tem o valor de $path1 já expandido quando é executado.
Outro exemplo, este método de tempo # 1:
$ awk -F'/' 'END{a="'$path1'";split(a,arr,FS); print(arr[5])}' /dev/null
+ awk -F/ 'END{a="/usr/tmp/foo/bar/baz";split(a,arr,FS); print(arr[5])}'
bar
Aqui você pode ver que o shell está expandindo definitivamente a variável $path1 antes de executar awk .