
# Shell
#### 功能
通过Shell节点执行用户指定的Shell脚本。
![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
Shell节点的后续节点可以通过EL表达式**#{Job.getNodeOutput()}**，获取Shell脚本最后4000字符的标准输出。
使用示例：
获取某个Shell脚本（脚本名称为shell_job1）输出值包含"\<name\>jack\<name1\>"的内容，EL表达式如下所示：
```
#{StringUtil.substringBetween(Job.getNodeOutput("shell_job1"),"<name>","<name1>")}
```
数据开发中的shell作业，是根据脚本执行返回值判断脚本执行成功还是失败。 如果返回值是0，则判断脚本执行成功。非0为失败。
#### 参数
用户可以参考[表1]和[表2]配置Shell节点的参数。
 表1属性参数 
| 参数       | 是否必选 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| 节点名称     | 是    | 节点名称，只能包含英文字母、数字、中文字符、中划线、下划线、/、\<\>和点号，且长度小于等于128个字符。 默认情况下，节点名称会与选择的脚本名称保持同步。若不需要节点名称和脚本名称同步，请参考[禁用作业节点名称同步变化](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_04501.html#dataartsstudio_01_04501__section67661828112219)禁用该功能。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Shell或脚本 | 是    | 可以选择Shell语句或Shell脚本。 - Shell语句 单击"Shell语句"参数下的文本框，在"Shell语句"页面输入需要执行的Shell语句。   - Shell脚本 在"脚本路径"参数后选择需要执行的脚本。如果脚本未创建，请参考[新建脚本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0423.html)和[开发Shell脚本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0425.html)先创建和开发脚本。 说明： 若选择Shell语句方式，数据开发模块将无法解析您输入Shell语句中携带的参数。 Shell节点运行的输出结果不能大于30M，大于30M会报错。    |
| 主机连接     | 是    | 选择执行Shell脚本的主机。 须知： - Shell或Python脚本可以在该ECS主机上运行的最大并发数由ECS主机的**/etc/ssh/sshd_config**文件中MaxSessions的配置值确定。请根据Shell或Python脚本的调度频率合理配置MaxSessions的值。  - 连接主机的用户需要具有主机**/tmp**目录下文件的创建与执行权限。  - Shell和Python脚本都是发往ECS主机的**/tmp** 目录下去运行的，需要确保**/tmp**目录磁盘不被占满。                                                                                                                                                                                                                                                                                                                                                                                                             |
| 参数       | 否    | 填写执行Shell脚本时，向脚本传递的参数，参数之间使用空格分隔，例如：a b c。此处的"参数"需要在Shell脚本中引用，否则配置无效。 说明： 请勿输入敏感信息，例如ak、sk、password、authorization等信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 交互式输入    | 否    | 填写交互式参数，即执行Shell脚本的过程中，需要用户输入的交互式信息（例如密码）。交互式参数之间以空格分隔，Shell脚本根据交互情况按顺序读取参数值。 read -p语法的使用示例： ``` read -p “输入参数1和参数2”变量1 变量2 ``` 说明： 请勿输入敏感信息，例如ak、sk、password、authorization等信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表2高级参数 
| 参数               | 是否必选 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| 节点状态轮询时间（秒）      | 是    | 设置轮询时间（1\~60秒），每隔x秒查询一次节点是否执行完成。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 节点执行的最长时间        | 是    | 设置节点执行的超时时间，如果节点配置了重试，在超时时间内未执行完成，该节点将会再次重试。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 失败重试             | 是    | 节点执行失败后，是否重新执行节点。 - 是：重新执行节点，请配置以下参数。 - 超时重试  - 最大重试次数  - 重试间隔时间（秒）    - 否：默认值，不重新执行节点。 说明： 如果作业节点配置了重试，并且配置了超时时间，该节点执行超时后，系统支持再重试。 当节点运行超时导致的失败不会重试时，您可前往"默认项设置"修改此策略。 当"失败重试"配置为"是"才显示"超时重试"。    |
| 重试条件             | 否    | 失败重试选择"是"时，支持设置重试条件。 打开重试条件的开关，设置返回码的范围。 Shell作业可以根据返回码判断作业节点执行失败是否重试。用户可以定义Shell的返回结果码中哪些返回码可以重跑。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 当前节点失败后，后续节点处理策略 | 是    | 节点执行失败后的操作： - 终止后续节点执行计划：停止后续节点的运行，当前作业实例状态显示为"失败"。  - 终止当前作业执行计划：停止当前作业运行，当前作业实例状态显示为"失败"。  - 继续执行下一节点：忽略当前节点失败，当前作业实例状态显示为"忽略失败"。  - 挂起当前作业执行计划：当前作业实例的状态为运行异常，该节点的后续节点以及依赖于当前作业的后续作业实例都会处于等待运行状态。                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 是否空跑             | 否    | 如果勾选了空跑，该节点不会实际执行，将直接返回成功。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 任务组              | 否    | 选择任务组。任务组配置好后，可以更细粒度地进行当前任务组中的作业节点的并发数控制，比如作业中包含多个节点、补数据、重跑等场景。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
