更新时间:2024-08-29 GMT+08:00

开发Shell脚本

数据开发支持对Shell脚本进行在线开发、调试和执行,开发完成的脚本可以在作业中调度运行(请参见开发Pipeline作业)。

前提条件

  • 已新增Shell脚本,请参见新建脚本
  • 已新建主机连接,该Linux主机用于执行Shell脚本,请参见主机连接参数说明
  • 连接主机的用户需要具有主机/tmp目录下文件的创建与执行权限。
  • Shell或Python脚本可以在该ECS主机上运行的最大并发数由ECS主机的/etc/ssh/sshd_config文件中MaxSessions的配置值确定。请根据Shell或Python脚本的调度频率合理配置MaxSessions的值。
  • 当前用户已锁定该脚本,否则需要通过“抢锁”锁定脚本后才能继续开发脚本。新建或导入脚本后默认被当前用户锁定,详情参见编辑锁定功能

操作步骤

  1. 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。
  2. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
  3. 在数据开发主界面的左侧导航栏,选择数据开发 > 脚本开发
  4. 在脚本目录中,双击脚本名称,进入脚本开发页面。
  5. 在编辑器上方,配置如表1所示的属性。
    表1 Shell脚本属性

    参数

    说明

    主机连接

    选择执行Shell脚本的主机。

    单击右侧的“输入参数”,可以输入执行Shell脚本的参数和交互式参数。

    表2 Shell脚本参数

    参数

    说明

    参数

    填写执行Shell脚本时,向脚本传递的参数。多个参数之间使用空格分隔,例如:a b c。

    此处的“参数”需要在Shell脚本中使用位置变量(如$1,$2,$3)引用,否则配置无效。位置变量由0开始,其中0变量预留用来保存实际脚本的名字,1变量对应脚本的第1个参数,依次类推。如$1、$2、$3分别引用参数a、参数b和参数c。

    注意:shell脚本中若引用变量请直接使用$args格式,不要使用${args}格式,否则会导致被作业中同名参数替换。

    例如参数输入为“a b c”,执行如下shell脚本,执行结果显示为“b” 。

    echo $2

    交互式参数

    填写交互式参数,即执行Shell脚本的过程中,需要用户输入的交互式信息(例如密码)。交互式参数之间以空格分隔,Shell脚本根据交互情况按顺序读取参数值。

    例如执行如下交互式shell脚本, 交互参数1、2、3 分别对应begin、end、exit。

    • 当交互参数输入1时,执行结果显示为“start something”。
    • 当交互参数输入2时,执行结果显示为“stop something”。
    • 当交互参数输入3时,执行结果显示为“exit”。
    #!/bin/bash
    select Actions in "begin" "end" "exit"
    do
    case $Actions in
    "begin")
    echo "start something" 
    break
    ;;
    "end")
    echo "stop something" 
    break
    ;;
    "exit")
    echo "exit" 
    break
    ;;
    *)
    echo "Ignorant" 
    ;;
    esac
    done

    read -p语法的使用示例:

    read -p “输入参数1和参数2”变量1 变量2
  6. 在编辑器中编辑Shell语句。为了方便脚本开发,数据开发模块提供了如下能力:
    • 脚本编辑器支持使用如下快捷键,以提升脚本开发效率。
      • F8:运行
      • F9:停止
      • Ctrl + /:注释或解除注释光标所在行或代码块
      • Ctrl + S:保存
      • Ctrl + Z:撤销
      • Ctrl + F:查找
      • Ctrl + Shift + R:替换
      • Ctrl + X:剪切,光标未选中时剪切一行
      • Alt + 鼠标拖动:列模式编辑,修改一整块内容
      • Ctrl + 鼠标点选:多列模式编辑,多行缩进
      • Shift + Ctrl + K:删除当前行
      • Ctrl + →或Ctrl + ←:向右或向左按单词移动光标
      • Ctrl + Home或Ctrl + End:移至当前文件的最前或最后
      • Home或End:移至当前行最前或最后
      • Ctrl + Shift + L:鼠标双击相同的字符串后,为所有相同的字符串添加光标,实现批量修改
      • Ctrl + D:删除一行
      • Shift + Ctrl + U:解锁
      • Ctrl + Alt + K:同词选择
      • Ctrl + B:格式化
      • Ctrl + Shift + Z:重做
      • Ctrl + Enter:执行所选行/选中内容
      • Ctrl + Alt + F:标记
      • Ctrl + Shift + K:查找上一个
      • Ctrl + K:查找下一个
      • Ctrl + Backspace:删除左侧单词
      • Ctrl + Delete:删除右侧单词
      • Alt + Backspace:删除至行首
      • Alt + Delete:删除至行尾
      • Alt + Shift-Left:选择行首
      • Alt + Shift-Right:选择行尾
    • 支持脚本参数功能,使用方法如下:
      1. 在Shell语句中直接写入脚本参数名称和参数值。当Shell脚本被作业引用时,如果作业配置的参数名称与Shell脚本的参数名称相同,Shell脚本的参数值将被作业的参数值替换。

        脚本示例如下:

        a=1
        echo ${a}

        其中,a是参数名称,只支持英文字母、数字、“-”、“_”、“<”和“>”,最大长度为16字符,且参数名称不允许重名。

      2. 在编辑器上方配置参数,在执行Shell脚本时,参数会向脚本传递。参数之间使用空格分隔,例如:a b c。此处的“参数”需要在Shell脚本中引用,否则配置无效。

        注意:shell脚本中若引用变量请直接使用$args格式,不要使用${args}格式,否则会导致被作业中同名参数替换。

    • 支持设置脚本责任人

      单击编辑器右侧的“脚本基本信息”,可设置脚本的责任人和描述信息。

    • 脚本内容大小不能超过16MB。
    • 企业模式下,支持从脚本开发界面快速前往发布。标放置在上,单击“前往发布”,进入待发布任务界面。
  7. 在编辑器上方,单击“运行”。Shell语句运行完成后,在编辑器下方可以查看脚本的执行历史和执行结果。
    对于执行结果支持如下操作:
    • 重命名:可通过双击执行结果页签的名称进行重命名,也可通过右键单击执行结果页签的名称,单击重命名。重命名不能超过16个字符。
    • 可通过右键单击执行结果页签的名称关闭当前页签、关闭左侧页签、关闭右侧页签、关闭其它页签、关闭所有页签。
    • Shell脚本运行的输出结果不能大于30M,大于30M会报错。
    • 脚本执行历史结果可以进行权限管控,可设置为“仅自己可见”或“所有用户可见”,默认配置项请参见脚本执行历史展示
  8. 在编辑器上方,单击“保存”,保存脚本。
    如果脚本是新建且未保存过的,请配置如表3所示的参数。
    表3 保存脚本

    参数

    是否必选

    说明

    脚本名称

    脚本的名称,只能包含字符:英文字母、数字、中文、中划线、下划线和点号,且长度小于等于128个字符。

    描述

    脚本的描述信息。

    选择目录

    选择脚本所属的目录,默认为根目录。

    如果脚本未保存,重新打开脚本时,可以从本地缓存中恢复脚本内容。

    脚本保存后,在右侧的版本里面,会自动生成一个保存版本,支持版本回滚。保存版本时,一分钟内多次保存只记录一次版本。对于中间数据比较重要时,可以通过“新增版本”按钮手动增加保存版本。