输出变量是 任务调度中实现数据流动与任务协作的核心机制,通过显式定义和传递参数,解决了跨节点数据共享、优先级冲突等问题,同时支持复杂流程编排(如子流程、条件分支)。合理使用输出变量能显著提升工作流的灵活性和可维护性。本文将介绍 DolphinScheduler 中重要的输出变量及其使用方法。
在 Shell 脚本中,单引号 (')、双引号 (") 和反引号 (`) 各自有不同的作用和用法。理解它们的区别和用法对于编写和调试 Shell 脚本非常重要
用途:完全引用,用于保护字符串中的所有字符,不进行变量替换或命令替换
特性:引号内的任何字符都将原样输出,不会进行任何解释
VAR="world"echo 'Hello, $VAR' # 输出:Hello, $VAR
用途:部分引用,用于保护字符串中的大部分字符,但允许变量替换和命令替换
特性:引号内的变量和命令会被解释,其余字符原样输出
VAR="world"echo "Hello, $VAR" # 输出:Hello, world
用途:命令替换,用于执行引号内的命令,并将命令的输出作为结果返回
特性:引号内的命令会被执行,结果会替换反引号中的内容
注意:反引号是旧的命令替换方式,更推荐使用 $()
DATE=`date`echo "Current date and time: $DATE" # 输出当前日期和时间
更现代和可读性更好
可以嵌套使用,而反引号嵌套使用比较困难
DATE=$(date)echo "Current date and time: $DATE" # 输出当前日期和时间# 嵌套命令替换示例OUTER=``(echo "Outer ``(echo "Inner")")echo $OUTER # 输出:Outer Inner
单引号:当你不希望字符串中的任何内容被解释时使用,例如正则表达式、特殊字符等
双引号:当你希望字符串中包含变量或命令替换时使用
反引号/$():当你需要执行命令并使用其输出时使用
2.1.1、流程如下
2.1.2、任务配置
taskA
echo 'taskA'echo "#{setValue(linesNum=${lines_num})}"echo '${setValue(words=20)}'
注意 : 这里${lines_num}其实直接就是通过Worker进行变量进行替换的
taskB
echo 'taskB'echo ${linesNum}echo ${words}
2.1.3、结果输出
主要看taskB的输出
2.2、Shell文件传递
2.2.1、流程如下
2.2.2、任务配置
fileUploadTask
echo 'fileUploadTask'mkdir -p data/test1 data/test2echo "test1 message" >> data/test1/text.txtecho "test2 message" >> data/test2/text.txttree.
fileDownloadTask
echo 'fileDownloadTask'cat input_dir/test1/text.txtcat input_dir/test2/text.txt
2.2.3、结果输出
fileDownloadTask
模式从SqlTask任务进行结果的输出,ShellTask对结果使用
2.3.1、流程如下
2.3.2、任务配置
sqlOutVarTask
select user_name as userNameList from t_ds_user
readOutVarTask
echo 'readOutVarTask'echo ${userNameList}
2.3.3、结果输出
readOutVarTask
以上就是今天的全部内容了,希望对大家更好地使用DolphinScheduler有所帮助。
转载自Journey
原文链接:https://segmentfault.com/a/1190000045035406