def to_string(self, shell=None):
        '''Use the command executor to retrieve the text of the scrim script
        compatible with the provided shell. If no shell is provided, use
        :attr:`scrim.shell`.

        Attributes:
            shell (str): Which shell should we return a script for
                cmd.exe, powershell.exe, bash...

        Returns:
            str
        '''

        shell = shell or self.shell
        lines = []
        for c in self.commands:
            text = self.command_executor(c, shell)
            if text is not None:
                lines.append(text)

        return '\n'.join(lines)