docs: def run(self, in_batches):
          """Run shell operator synchronously to eat `in_batches`
  
          :param in_batches: `tuple` of batches to process
          """
          if len(in_batches) != len(self._batcmd.batch_to_file_s):
              BaseShellOperator._rm_process_input_tmpfiles(self._batcmd.batch_to_file_s)  # [todo] - Removing tmpfiles can be easily forgot. Less lifetime for tmpfile.
              raise AttributeError('len(in_batches) == %d, while %d IN_BATCH* are specified in command below:%s$ %s' %
                                   (len(in_batches), len(self._batcmd.batch_to_file_s), os.linesep, self._batcmd.sh_cmd))
  
          # prepare & start process (if necessary)
          BaseShellOperator._batches_to_tmpfile(self._in_record_sep, self._in_column_sep, in_batches, self._batcmd.batch_to_file_s)
          if self._process is None:
              self._process = BaseShellOperator._start_process(
                  self._batcmd, self._cwd, self._env,
                  non_blocking_stdout=True)
  
          # Begin thread to read from subprocess's stdout.
          # Without this thread, subprocess's output buffer becomes full and no one solves it.
          t_consumer = Thread(target=get_subprocess_output,
                              args=(self._process.stdout, self._batch_done_output, self._subprocess_out_str))
          t_consumer.start()
  
          # pass batch to subprocess
          BaseShellOperator._batch_to_stdin(self._process, self._in_record_sep, self._in_column_sep,
                                            in_batches, self._batcmd.batch_to_file_s)
  
          # pass batch-done indicator to subprocess
          self._process.stdin.write(self._batch_done_indicator)
  
          # get output from subprocess
          t_consumer.join()
          subprocess_out_str       = self._subprocess_out_str[0]
          self._subprocess_out_str = []
          out_batch = BaseShellOperator._out_str_to_batch(subprocess_out_str,
                                                          self._out_recdef, self._out_col_patterns)
          return out_batch