title: Bash Not Continuing after script call?
body: <p>I have two bash scripts. One runs perfectly fine till it reaches the call for another script, it then executes that script fine but never EVER continues in the original script and I am not sure how= to fix the issue.</p>
  
  <p>This script, which runs the tests in each folder of a specific directory. Each sub folder contains a phpunit.xml file and when we enter each folder we run <code>composer install</code> and <code>phpunit</code>.</p>
  
  <p>Should the directory be, Loader, Routes or Loop, we will then enter those and run the script in side that directory.</p>
  
  <p>Lets look at the <code>run-tests</code> script:</p>
  
  <pre><code>#!/usr/bin/env bash
  
  set -e
  
  function run_tests() {
    if [[ -f "composer.json" ]] &amp;&amp; [[ -f "phpunit.xml" ]]; then
      if [[ -d "vendor" ]]; then
        composer update
        phpunit &gt; /dev/null
        phpunit
        cd ../
      else
        composer install
        phpunit &gt; /dev/null
        phpunit
        cd ../
      fi
    else
      cd ../
    fi
  }
  
  for f in *; do
    if [[ -d $f ]]; then
      if [[ $f != ".git" ]] &amp;&amp; [[ $f != "bin" ]] &amp;&amp; [[ $f != "docs" ]]; then
        cd "$f/"
  
        if [[ $f == "Loader" ]]; then
          if [[ -d "Assets" ]]; then
            cd Assets/
            chmod +x asset-test
            ./asset-test
          fi
        fi
  
        if [[ $f == "Loop" ]]; then
          cd Loop/
          chmod +x loop-test
          ./loop-test
          cd ../
        fi
  
        if [[ $f == "Routes" ]]; then
          cd Routes/
          chmod +x routes-test
          ./routes-test
          cd ../
        fi
  
        run_tests
      fi
    fi
  done
  
  # Go Home.
  cd /vagrant/Freya/
  
  ## Clean up time!
  ## Remove all vendor and composer.lock folders - just because.
  for f in *; do
    if [[ -d $f ]]; then
      if [[ $f != ".git" ]] &amp;&amp; [[ $f != "bin" ]] &amp;&amp; [[ $f != "docs" ]]; then
        cd "$f/"
        rm -rf vendor composer.lock
        cd ../
      fi
    fi
  done
  </code></pre>
  
  <p>We can see that once it enter the check to see if the directory we are in is "Loops", we then check if there is a directory called "Assets" inside. Assuming this passes, we then enter that directory and run the next script:</p>
  
  <pre><code>#!/usr/bin/env bash
  
  set -e
  
  # Run Composer Install if vendor doesnt exist.
  if [[ -d "vendor" ]]; then
    composer update
  else
    composer install
  fi
  
  # Move up to the root directories and then get wordpress
  cd ../../../
  
  # Determine if the trunk is checked out and if we have a wp-test-config.php
  # If not we need to create both or one or the other then run the tests.
  #
  # We run phpunit twice because the second time is when it actually runs.
  if [[ -d "trunk" ]]; then
    cd "trunk/"
    if [[ -f "wp-tests-config.php" ]]; then
      cd ../Freya/Loader/Assets
      phpunit &gt; /dev/null
      phpunit
    else
      cd ../Freya/Loader/Assets
      cp wp-tests-config.php ../../trunk/
      phpunit &gt; /dev/null
      phpunit
    fi
  else
    sudo svn co http://develop.svn.wordpress.org/trunk/
    cd Freya/Loader/Assets
    cp wp-tests-config.php ../../trunk/
    phpunit &gt; /dev/null
    phpunit
  fi
  </code></pre>
  
  <p>The issue is once this script finishes, the rest of the first script I posted NEVER continues. Its like it just dies here. What I need is for the "parent" script to finish, it should back out of <code>Loader/Assets</code> and continue on to the next check. But it doesn't. The script just exists.</p>
  
  <p><strong>Why?</strong></p>
  
  <p><strong>Note:</strong> In the second script we can assume it goes into the first nested if statement, where it checks, in the trunk directory for a <code>wp-tests-config.php</code> We can assume this because of the following output, which was captured from running the first script:</p>
  
  <pre><code>$ bin/run-tests 
  Loading composer repositories with package information
  Installing dependencies (including require-dev)
  Nothing to install or update
  Writing lock file
  Generating autoload files
  PHPUnit 4.6.4 by Sebastian Bergmann and contributors.
  
  Configuration read from /vagrant/Freya/Exceptions/phpunit.xml
  
  .
  
  Time: 451 ms, Memory: 13.25Mb
  
  OK (1 test, 1 assertion)
  Loading composer repositories with package information
  Installing dependencies (including require-dev)
  Nothing to install or update
  Writing lock file
  Generating autoload files
  PHPUnit 4.6.4 by Sebastian Bergmann and contributors.
  
  Configuration read from /vagrant/Freya/Factory/phpunit.xml
  
  ...........
  
  Time: 711 ms, Memory: 13.25Mb
  
  OK (11 tests, 11 assertions)
  Loading composer repositories with package information
  Installing dependencies (including require-dev)
    - Installing freya/freya-templates (dev-master a33ecdb)
      Cloning a33ecdb231b06dc8a7eef363edb177b8c134d55b
  
  Writing lock file
  Generating autoload files
  PHPUnit 4.6.4 by Sebastian Bergmann and contributors.
  
  Configuration read from /vagrant/Freya/Form/phpunit.xml
  
  ...............................................................
  
  Time: 647 ms, Memory: 15.25Mb
  
  OK (63 tests, 63 assertions)
  Loading composer repositories with package information
  Updating dependencies (including require-dev)
  Nothing to install or update
  Generating autoload files
  Installing...
  Running as single site... To run multisite, use -c tests/phpunit/multisite.xml
  Not running ajax tests. To execute these, use --group ajax.
  Not running ms-files tests. To execute these, use --group ms-files.
  Not running external-http tests. To execute these, use --group external-http.
  PHPUnit 4.6.4 by Sebastian Bergmann and contributors.
  
  Configuration read from /vagrant/Freya/Loader/Assets/phpunit.xml
  
  ...........
  
  Time: 1.76 seconds, Memory: 38.00Mb
  
  OK (11 tests, 11 assertions)
  Loading composer repositories with package information
  Updating dependencies (including require-dev)
  Nothing to install or update
  Generating autoload files
  Installing...
  Running as single site... To run multisite, use -c tests/phpunit/multisite.xml
  Not running ajax tests. To execute these, use --group ajax.
  Not running ms-files tests. To execute these, use --group ms-files.
  Not running external-http tests. To execute these, use --group external-http.
  PHPUnit 4.6.4 by Sebastian Bergmann and contributors.
  
  Configuration read from /vagrant/Freya/Loader/Assets/phpunit.xml
  
  ...........
  
  Time: 1.79 seconds, Memory: 38.00Mb
  </code></pre>
  
  <p>We can see two issues here:</p>
  
  <ul>
  <li>The <code>/vagrant/Freya/Loader/Assets/</code> are run twice.</li>
  <li>It never continues on in the first script.</li>
  </ul>