Поправил:#!/bin/bash
awk -v tree="$2" -F":" '$3 ~ tree' "$1"
Если Вы заметили я предлагаю поменять «подмножество»( ~ ) на строгое равенство ( == ). Потому как с "~" если Вы не передадите второй аргумент, то скрипт выведет все строки. Или надо ставить дополнительную проверку на наличие аргумента.