Display a specific category of products in shop page and disable code for specific actions

This seems to be normal behavior since your filter will apply to any query made on post type archive “product”. You might be able to deactivate the filter for search query by adding the is_search condition to your filter so your function would look like so:

add_action('pre_get_posts','shop_filter_cat');

function shop_filter_cat($query) {
    if (!is_admin() && is_post_type_archive( 'product' ) && $query->is_main_query() && !is_search()) {
    $query->set('tax_query', array(
        array ('taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => array( '#','#'), //
            )
        )
    ); 
    }
}

Untested. hopefully this will help !

Codex ref: https://developer.wordpress.org/reference/functions/is_search/