Quando você coloca isso em um shell script, o $ 2 será substituído pelo argumento número 2:
v This
./myscript.sh one two
Quando você executou seu script, não incluiu um segundo argumento.
No entanto, isso é além do ponto, porque você quer, especificamente:
awk '{ print $2 }'
Você precisa escapar do símbolo '$' com '\'.
Isso deve funcionar:
#!/bin/bash
spawn ps xu | grep "ssh -f -N -o ConnectTimeout=5 -D $1" | grep -v grep | awk '{ print \ }' | xargs kill -9
A primeira linha não foi necessária, já que a porta será o primeiro argumento que você pode usar '$ 1' para obtê-la.