
# 开发Shell脚本
数据开发支持对Shell脚本进行在线开发、调试和执行，开发完成的脚本可以在作业中调度运行（请参见[开发Pipeline作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0435.html)）。
#### 前提条件
- 已新增Shell脚本，请参见[新建脚本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0423.html)。
- 已新建主机连接，该Linux主机用于执行Shell脚本，请参见[主机连接参数说明](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1305.html)。
- 连接主机的用户需要具有主机**/tmp**目录下文件的创建与执行权限。
- Shell或Python脚本可以在该ECS主机上运行的最大并发数由ECS主机的**/etc/ssh/sshd_config**文件中MaxSessions的配置值确定。请根据Shell或Python脚本的调度频率合理配置MaxSessions的值。
- 当前用户已锁定该脚本，否则需要通过"抢锁"锁定脚本后才能继续开发脚本。新建或导入脚本后默认被当前用户锁定，详情参见[编辑锁定功能](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0912.html)。
 
#### 操作步骤
1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
   详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
   
2. 在DataArts Studio控制台首页，选择对应工作空间的"数据开发"模块，进入数据开发页面。
3. 在数据开发主界面的左侧导航栏，选择"数据开发 \> 脚本开发"。
4. 在脚本目录中，双击脚本名称，进入脚本开发页面。
5. 在编辑器上方，配置如[表1]所示的属性。
    表1Shell脚本属性 
   | 参数   | 说明              |
   |:---|:---|
   | 主机连接 | 选择执行Shell脚本的主机。 |
      
   单击右侧的"输入参数"，可以输入执行Shell脚本的参数和交互式参数。
   表2Shell脚本参数 
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   |:---|:---|
   | 参数    | 填写执行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 + 鼠标点选：多列模式编辑，多行缩进
     
     - 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}格式，否则会导致被作业中同名参数替换。
        
      
   
   - 支持设置脚本责任人 单击编辑器右侧的"脚本基本信息"，可设置脚本的责任人。
     
   
   - 脚本内容大小不能超过1MB。
   
   - 请勿输入敏感信息，例如ak、sk、password、authorization等信息。
   
   - 企业模式下，支持从脚本开发界面快速前往发布。单击页面上方的"前往发布"，跳转到任务发布界面。
    
7. 在编辑器上方，单击"运行"。Shell语句运行完成后，在编辑器下方可以查看脚本的执行历史和执行结果。
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   对于执行结果支持如下操作：
   - 重命名：可通过双击执行结果页签的名称进行重命名，也可通过右键单击执行结果页签的名称，单击重命名。重命名不能超过16个字符。
   
   - 可通过右键单击执行结果页签的名称关闭当前页签、关闭左侧页签、关闭右侧页签、关闭其他页签、关闭所有页签。
   
   - Shell脚本运行的输出结果不能大于30M，大于30M会报错。
   
   - 查看脚本执行结果时，双击任意一行的一个字段，可以查看该行的结果详情，支持复制字段名称。
   
   - 脚本执行历史结果可以进行权限管控，可设置为"仅自己可见"或"所有用户可见"，默认配置项请参见[脚本执行历史展示](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_04501.html#dataartsstudio_01_04501__section7536359192017)。
     
8. 在编辑器上方，单击"保存"，保存脚本。
   如果脚本是新建且未保存过的，请配置如[表3]所示的参数。
    表3保存脚本 
   | 参数   | 是否必选 | 说明                                                |
   |:---|:---|:---|
   | 脚本名称 | 是    | 脚本的名称，只能包含字符：英文字母、数字、中文、中划线、下划线和点号，且长度小于等于128个字符。 |
   | 描述   | 否    | 脚本的描述信息。                                          |
   | 选择目录 | 是    | 选择脚本所属的目录，默认为根目录。                                 |
      
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   如果脚本未保存，重新打开脚本时，可以从本地缓存中恢复脚本内容。
   脚本保存后，在右侧的版本里面，会自动生成一个保存版本，支持版本回滚。保存版本时，一分钟内多次保存只记录一次版本。对于中间数据比较重要时，可以通过"新增版本"按钮手动增加保存版本。
   
 
