PSV*_*ter 1 linux bash shell talend
我有几十个脚本,都在不同的目录中.(导出/扩展的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的,但应该非常强大 - 使用包含空格,文字换行符,通配符等的目录名称.
要更改为您自己的源目录(其他地方的常见问题解答):
cd "$(basename "$BASH_SOURCE")"
Run Code Online (Sandbox Code Playgroud)
要更改为父进程的当前目录:
cd "/proc/$PPID/cwd"
Run Code Online (Sandbox Code Playgroud)
如果要更改为作为父进程的第一个命令行参数传递的目录:
{ IFS= read -r -d '' _ && IFS= read -r -d '' argv1; } <"/proc/$PPID/cmdline"
cd "$argv1"
Run Code Online (Sandbox Code Playgroud)
也就是说,我个人只是将作业目录导出到父进程中的环境变量,并在子进程中读取该环境变量.更简单,更简单,更便携,更准确,并符合最佳流程.
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |