Jak przenieść zmienną z powłoki do awk?

0

Napisałem skrypt, oto on:

#!/bin/bash
for num in {1..100}; do
	awk -v file="eq2_"${num}".gro"
	'BEGIN {
		while (getline < file {
			if ($NF < 3.477 || $NF > 7.947 || $(NF-1) < 12.741 || $(NF-1) > 22.240) 
				name[$1]=$1
			}
		} 
	{if ($1 != name[$1]) print}' eq2_$num.gro | tee eq3_$num.gro
done

Próbowałem też innym sposobem

#!/bin/bash

for num in {1..100} 
do
	count="eq2_"$variable".gro"
	awk -v var="$count"
	'BEGIN {
		while (getline < count {
			if ($NF < 3.477 || $NF > 7.947 || $(NF-1) < 12.741 || $(NF-1) > 22.240) 
				name[$1]=$1
			}
		} 
	{if ($1 != name[$1]) print}' eq2_$num.gro | tee eq3_$num.gro
done

Pojawia się błąd:

Użycie: awk [styl opcji POSIX lub GNU] -f plik_z_programem [--] plik ...
Użycie: awk [styl opcji POSIX lub GNU] [--] 'program' plik ...
Opcje POSIX:		Długie opcje GNU (standard):
	-f program		--file=program
	-F fs			--field-separator=fs
	-v zmienna=wartość	--assign=zmienna=wartość
Krótkie opcje:		Długie opcje GNU: (rozszerzenia)
	-b			--characters-as-bytes
	-c			--traditional
	-C			--copyright
	-d[plik]		--dump-variables[=plik]
	-D[plik]		--debug[=plik]
	-e 'tekst-programu'	--source='tekst-programu'
	-E plik			--exec=plik
	-g			--gen-pot
	-h			--help
	-i plikinclude		--include=plikinclude
	-l biblioteka		--load=biblioteka
	-L[fatal|invalid]	--lint[=fatal|invalid]
	-M			--bignum
	-N			--use-lc-numeric
	-n			--non-decimal-data
	-o[plik]		--pretty-print[=plik]
	-O			--optimize
	-p[plik]		--profile[=plik]
	-P			--posix
	-r			--re-interval
	-S			--sandbox
	-t			--lint-old
	-V			--version

Aby zgłosić błąd, prosimy zobaczyć węzeł `Bugs' w `gawk.info'
lub rozdział p.t. `Reporting Problems and Bugs' w wydrukowanej
dokumentacji.

gawk jest językiem skanowania i przetwarzania wzorców.
Program domyślnie czyta standardowe wejście i zapisuje standardowe wyjście.

Przykłady:
	gawk '{ suma += $1 }; END { print suma }' plik
	gawk -F: '{ print $1 }' /etc/passwd
./delete_water.sh: linia 11: $'BEGIN {\n\t\twhile (getline < file {\n\t\t\tif ($NF < 3.477 || $NF > 7.947 || $(NF-1) < 12.741 || $(NF-1) > 22.240) \n\t\t\t\tname[$1]=$1\n\t\t\t}\n\t\t} \n\t{if ($1 != name[$1]) print}': nie znaleziono polecenia

Nie rozumiem, dlaczego jak używam zmiennej z powłoki do getline to są problemy, napisałem banalny skrypt i tu wszystko działa jak złoto

#!/bin/bash
for variable in {1..100}
do
	count="Hello"$variable"world"
        awk -v var="$count" 'BEGIN {print var}'
done
0
#!/bin/bash

for num in {1..100} 
do
    count="eq2_"$num".gro"
    awk -v var="$count"
    'BEGIN {
        while (getline < var) {
       ..

1 użytkowników online, w tym zalogowanych: 0, gości: 1