最新历史版本 :Shell脚本 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

[helpvideo]8627[/helpvideo]

1.1 版本说明

FineDataLink 版本
功能变动
4.0.8-
4.1.0「脚本参数」下拉框中显示已配置参数

1.2 应用场景

用户希望在 FineDataLink 中调用 Kettle 任务、调用 Python 计算任务、Java 程序/ Spark 程序,或者进行数据库备份还原等操作。

1.3 功能简介

「Shell 脚本」节点通过连接指定服务器,调用服务器上的 Shell 脚本执行任务,对接外部的独立数据处理过程。

例如 SVN 更新、文件运维清理、调用 Kettle 任务、调用 Python 计算任务、调用 Spark 计算任务、执行数据库备份还原等。

同时「Shell 脚本」节点支持在脚本中使用 FineDataLink 中设置的  参数

demo 任务详情请参见:https://demo.finedatalink.com/  「SHELL 脚本-副本」

1.4  使用限制

仅支持执行 Linux 系统下后缀名为 .sh的脚本文。

2. 功能说明编辑

配置项
说明
SSH 连接下拉所有可选的 SSH 连接
脚本路径

填写 SSH 目标端要执行的 Shell 脚本完整路径,需注意:

  • 仅支持 Linux 系统下后缀名为 .sh 的脚本文件

  • 支持引用参数,引用参数示例如下

48.png

脚本参数1)指定传递给脚本的参数。需注意:
  • 脚本参数传入脚本的顺序按照序号自上而下

  • 参数中不能带有单引号,若参数确实需要带有单引号时,通过自定义 Shell 脚本内的参数使用逻辑来替代实现

  • 不允许出现未配置的脚本参数项

  • 仅支持选择已有参数(不支持同名参数选择)

2)4.1.0 及之后版本,参数下拉框中显示已配置参数,分为任务内参数、全局参数:

  • 所有同名参数都显示,若同名参数会根据参数优先级(「参数赋值」设置的参数>调用任务中父任务参数>「自定义参数」>全局参数>「内置参数」),显示生效的参数

  • 不可用的参数灰化

47.png

命令超时配置脚本开始执行到完全执行完毕的超时时间
  • 默认选择「无限制」

  • 超时时间支持配置范围为0~1000000

字符编码指定输出字符编码。

支持设置编码格式:

  • UTF-8

  • GBK

  • BIG5

  • ISO-8859-1

3. 示例编辑

3.1 配置SSH协议数据连接

由于需要在目标服务器执行指定 Shell 脚本,因此需要首先通过 SSH 远程连接至目标服务器。

配置 SSH 数据连接步骤请参见:配置SSH协议数据连接

3.2 准备 shell 脚本

例如某 Shell 脚本如下图所示:

其中 $0:指所写的 Shell 脚本本身的名字;$1、$2、$3分别为写入的三个参数(三个参数将在 FineDataLink 中进行赋值)。

执行脚本后,最终会输出三个参数值:参数一:存储在 fine_apple 数据表中的指定位置数据(苹果);参数二:当前任务运行时间;参数三:手动赋值 b3,如下图所示:

3.3 设置参数

由于第一个参数 $1存储在数据表中,我们使用参数赋值取出。

首先新建「参数赋值」节点,从数据表中取出需要使用的数据(例如这里取出苹果)作为参数,如下图所示:

fine_apple 数据表如下:

第二个和第三个参数 $2、$3 直接使用参数列表,如下图所示:

3.4 设置 Shell 脚本

新建 Shell 脚本,将参数赋值节点和脚本连接,选择需要远程执行任务的目标服务器 SSH 连接位置,写入脚本路径,然后设置脚本参数,点击添加参数,将 3.3 节设置参数 b1、b2、b3 添加至脚本参数中,如下图所示:

注:如果 Shell 脚本在循环容器中使用到其遍历使用的参数时,取到的参数值为遍历过程中的值。

3.5 执行任务

点击「运行」,即可执行任务,如下图所示:

如果需要更详细的日志输出,可将日志等级调整为INFO:日志等级设置,详细日志如下图所示:

执行任务后,即可在脚本设置的输出文件中看到输出结果,即输出了三个参数,如下图所示:

3.6 如何判断脚本执行成功

详情参见:Shell 脚本执行结果说明

3.7 后续操作

若 Shell 脚本需要周期性调度执行,需要设置任务调度,详情请参见:调度计划

4. 拓展阅读编辑

在 Shell 脚本中,输出信息可以通过以下三种方式进行:

  • echo 命令:用于输出信息到标准输出。

  • printf 命令:类似于其他编程语言中的打印函数,可以格式化输出文本。

  • echo 命令结合重定向:将输出结果重定向到文件或其他程序。

以下是每种方式的示例代码:

使用 echo 输出文本:

echo "Hello, World!"

使用 printf 输出格式化文本:

printf "Name: %s\nAge: %d\n" "Alice" 30

使用重定向将输出保存到文件:

echo "This will be saved to a file" > output.txt

前两种输出方式都会直接在日志中输出,如下图所示:

第三种重定向输出会直接输出到文件中,不会在日志中显示。