How to use drush site-lists alias? I several folders containing symlinks to my drupal sites.  I'd like to use this folder structure to create an alias so I can run commands on each group of sites.

I'm trying to do what "drush @sites status" will do, but on a smaller subset.

I wrote the following based on the docs 

// List the instances from the OU instances folder
$full_path = "/opt/drupal/sites/instances";
if ($handle = opendir("$full_path")) {
    while (false !== ($file = readdir($handle))) {
        if(is_dir($full_path."/".$file)) {
          if ($file != '.' &amp;&amp; $file != '..')
            $instances[] = $file;
        }
    }
}

// Turn them into aliases so we just have to type @instance
foreach ($instances as $instance) {

    $site_list = [];

    // Look at each instance
    $site_paths = $full_path . "/" . $instance;

    if ($file_handle = opendir("$site_paths")) {
      // List out the folders in this instance
      while (false !== ($site_folder = readdir($file_handle))) {

        if(is_dir($site_paths."/".$site_folder)) {
          // If the folder represents a drupal site
          if ($site_folder != '.' &amp;&amp; $site_folder != '..')
            // Add it to this instances list
            $site_list[] = '@' . $site_folder;
        }
      }
    }


   $aliases[$instance] = array(
            'site-list' =&gt; $site_list,
        );
}
print_r($aliases);


The cheeky print_r on the end shows my array as 

 [partnership] =&gt; Array
        (
            [site-list] =&gt; Array
                (
                    [0] =&gt; @www.1.co.uk
                    [1] =&gt; @www.2.org
                    [2] =&gt; @www.3.org.uk
                    [3] =&gt; @www.4.org
                    [4] =&gt; @www.5.eu
                    [5] =&gt; @www.6.net
                    [6] =&gt; @www.7.com
                    [7] =&gt; @www.8-ri-2020.eu
                    [8] =&gt; @www.9.edu
                    [9] =&gt; @www.10.ac.uk
                    [10] =&gt; @www.11.org
                    [11] =&gt; @www.12.ac.uk
                    [12] =&gt; @www.13.co.uk
                    [13] =&gt; @www.14.org.uk
                    [14] =&gt; @www.15.ac.uk
                )

        )


I've changed the names to protect the innocent, but they are valid aliases.

When I run "drush @partnership status" I get 

drush @partnership status
You are about to execute 'status' non-interactively (--yes forced) on all of the following targets:
Continue?  (y/n): y
Invalid argument supplied for foreach() backend.inc:661 


How do I get drush to actually run through this alias list telling me the status of each site?
I found that one of my colleges had written an invalid file in the drush folder.  I was writing mine in my ~/.drush folder.

The result was it would run his code, then my code, leaving a big mess that drush could only partially understand

I fixed the incorrect file and the code I posted in the question started working.  I can now run drush commands against a site-list.