airflow.operators.bash_operator¶
Module Contents¶
- 
class airflow.operators.bash_operator.BashOperator(bash_command, xcom_push=False, env=None, output_encoding='utf-8', *args, **kwargs)[source]¶
- Bases: - airflow.models.BaseOperator- Execute a Bash script, command or set of commands. - See also - For more information on how to use this operator, take a look at the guide: BashOperator - Parameters
- bash_command (str) – The command, set of commands or reference to a bash script (must be ‘.sh’) to be executed. (templated) 
- xcom_push (bool) – If xcom_push is True, the last line written to stdout will also be pushed to an XCom when the bash command completes. 
- env (dict) – If env is not None, it must be a mapping that defines the environment variables for the new process; these are used instead of inheriting the current process environment, which is the default behavior. (templated) 
- output_encoding (str) – Output encoding of bash command 
 
 - Warning - Care should be taken with “user” input or when using Jinja templates in the - bash_command, as this bash operator does not perform any escaping or sanitization of the command.- This applies mostly to using “dag_run” conf, as that can be submitted via users in the Web UI. Most of the default template variables are not at risk. - For example, do not do this: - bash_task = BashOperator( task_id="bash_task", bash_command='echo "Here is the message: \'{{ dag_run.conf["message"] if dag_run else "" }}\'"', ) - Instead, you should pass this via the - envkwarg and use double-quotes inside the bash_command, as below:- bash_task = BashOperator( task_id="bash_task", bash_command='echo "here is the message: \'$message\'"', env={'message': '{{ dag_run.conf["message"] if dag_run else "" }}'}, )