小编PSV*_*ter的帖子

如何按特定顺序选择(几乎)唯一值

在一次旅行中,有几个站点(一个站点=一个地址,其中一个或多个订单被加载或交付),按特定顺序.例如:

Trip A
Trip_order   Action   Place          Ordernumber
10           Load     Paris          394798
20           Load     Milan          657748
30           UnLoad   Athens         657748
40           Unload   Thessaloniki   394798
50           Load     Thessaloniki   10142
60           Load     Thessaloniki   6577
70           Unload   Athens         6577
80           Unload   Athens         10412
90           Load     Thessaloniki   975147
100          Unload   Paris          975147
Run Code Online (Sandbox Code Playgroud)

我希望按行程顺序查看具体的停靠点:

Load Paris
Load Milan
Unload Athens
Unload Thessaloniki
Load Thessaloniki
Unload Athens
Load Thessaloniki
Unload Paris
Run Code Online (Sandbox Code Playgroud)

我确实看过这个,但如果我这样做,我只能卸载雅典,卸载塞萨洛尼基并加载塞萨洛尼基一次.

我该如何解决这个问题?

编辑:11:11(UTC +01:00)更具体一点:这些是提供此信息的表格:

Trips
Trip_ID
100001  
100002
100003
....

Actions
Trip_ID  Action MatNr …
Run Code Online (Sandbox Code Playgroud)

sql distinct

7
推荐指数
1
解决办法
259
查看次数

在bash中将目录更改为父/调用脚本的路径

我有几十个脚本,都在不同的目录中.(导出/扩展的Talend工作)

此时每个作业都有1或2个脚本,从相同的行开始,最重要的一行:

CD ***path-to-script***
Run Code Online (Sandbox Code Playgroud)

和几行来设置Java路径并启动作业.

我想创建一个脚本,它将从所有这些脚本运行.例如:

/scripts/talend.sh
Run Code Online (Sandbox Code Playgroud)

在所有talend脚本中,第一行将运行/scripts/talend.sh,这些脚本的运行位置的一些示例:

/talend-job1_0.1/talend-job1_0.1/talend-job1/talend-job1.sh
/talend-task2_0.1/talend-task2_0.1/talend-task2/talend-task2.sh
/talend-job3_0.1/talend-job3_0.1/talend-job3/talend-job3.sh
Run Code Online (Sandbox Code Playgroud)

如何确定/scripts/talend.sh从何处开始,因此我可以从内部CD到该路径/scripts/talend.sh.

Talend脚本不是从目录本身运行,而是从cronjob或不同的用户主目录运行.

编辑:问题被标记为重复,但从内部获取Bash脚本的源目录不是100%回答我的问题.问题是: - 从不同的脚本调用基本脚本 - 这些不同的脚本可以从命令行运行,带有或不带符号链接. - $ 0,$ BASH_SOURCE和pwd都做了一些事情,但没有提到的解决方案涵盖了所有的困难.

例:

/scripts/talend.sh   
Run Code Online (Sandbox Code Playgroud)

在这个脚本中,我想配置Java的$ PATH和$ HOME_PATH,并将CD配置到Talend作业所在的位置.(它是一个包,所以脚本必须从该位置运行).

例如,工作路径是:

/u/talend/talendjob1/sub../../talendjob1.sh 
/u/talend/talendjob2/sub../../talendjob2.sh
/u/talend/talendjob3/sub../../talendjob3.sh
Run Code Online (Sandbox Code Playgroud)

从TMS应用程序运行多个作业.此应用程序无法使用whol名称运行这些脚本(对于long,名称只能是6长),因此在不同的位置我有符号链接:

/u/tms/links/p00001 -> /u/talend/talendjob1/sub../../talendjob1.sh
/u/tms/links/p00002 -> /u/talend/talendjob1/sub../../talendjob2.sh
/u/tms/links/p00003 -> /u/talend/talendjob1/sub../../talendjob3.sh
/u/tms/links/p00004 -> /u/talend/talendjob1/sub../../talendjob4.sh
Run Code Online (Sandbox Code Playgroud)

我想你会对复杂性进行概述,为什么我只想要一个基本的talend脚本,在那里我可以留下所有基本内容.但我只能这样做,如果我知道Talend脚本的来源,因为我必须要开始那个talend工作.

linux bash shell talend

1
推荐指数
1
解决办法
1377
查看次数

标签 统计

bash ×1

distinct ×1

linux ×1

shell ×1

sql ×1

talend ×1