Searching for a tag then playing a sound

I have two different empty gameobjects which the currentweapon gets instantiated into, which one is dependent on the gun as they need to be in different positions. I want to search for certain tags within the two empty gameobjects and if an object within them has that tag, play that specific gun sound. There is two problems however, the awp gun does not get instantiated into the correct empty gameobject and the gun sounds do not play.

WeaponManager script where the gun is assigned to a gun holder (the empty gameobject):

[SerializeField]
    private Transform tecweaponHolder;
   
    [SerializeField]
    private Transform awpweaponHolder;

    [SerializeField]
    private PlayerWeapon primaryWeapon;
   
    [SerializeField]
    private PlayerWeapon secondaryWeapon;

    private PlayerWeapon currentWeapon;
    private WeaponGraphics currentGraphics;
   
    private Transform currentHolder;

    void Start ()
    {
        currentHolder = awpweaponHolder;
        EquipWeapon(primaryWeapon);
    }
   
    void Update()
    {
        if(Input.GetAxis("WeaponSwitch") >0f)
        {
            currentHolder = tecweaponHolder;
            EquipWeapon(secondaryWeapon);
            Debug.Log("switched weapon");
        }
        else if (Input.GetAxis("WeaponSwitch")<0f)
        {
            currentHolder = awpweaponHolder;
            EquipWeapon(primaryWeapon);
            Debug.Log("switched weapon back");
        }
    }

    public PlayerWeapon GetCurrentWeapon ()
    {
        return currentWeapon;
    }

The PlayerShoot script which searches for the tag and plays the appropriate gun sound:

[SerializeField]
    private Transform tecweaponHolder;
   
    [SerializeField]
    private Transform awpweaponHolder;


    void Start ()
    {
        if (cam == null)
        {
            Debug.LogError("PlayerShoot: No camera referenced!");
            this.enabled = false;
        }

        weaponManager = GetComponent<WeaponManager>();
    }

    void Update ()
    {
        currentWeapon = weaponManager.GetCurrentWeapon();

        if (PauseMenu.IsOn)
            return;

        if (currentWeapon.fireRate <= 0f)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                Shoot();
                foreach (Transform child in tecweaponHolder)
                {
                    if(gameObject.tag == "Tec")
                    {
                        CmdPlayTecShootSound();
                        Debug.Log("tec sound played");
                    }
                }
                foreach (Transform child in awpweaponHolder)
                {
                    if(gameObject.tag == "Awp")
                    {
                        CmdPlayAwpShootSound();
                        Debug.Log("awp sound played");
                    }
                }

            }

GetCurrentWeapon() returns the value of currentWeapon. That variable is never assigned a value. You do update currentHolder all the time. Maybe you mixed them up?