![](/img/trans.png)
[英]Custom Script for Linux - how to execute bash script from particular folder
[英]Linux how do I execute a bash script from the parent directory?
我有一个名为GenerateDTIPubSub的脚本,如果我使用终端(在同一文件位置中打开)从其文件位置调用该脚本,请执行以下操作:
./GenerateDTIPubSub --DTIFramePubSub
工作正常。
现在在上面的文件夹中时如何执行脚本? 示例: ./cfg/GenerateDTIPubSub --DTIFramePubSub
/ ./cfg/GenerateDTIPubSub --DTIFramePubSub
哪个不起作用(提醒您我也在上面的文件夹中打开了终端)
编辑:它执行但bash脚本,但无法找到它执行的perl脚本,除非从其目录执行bash脚本(如果这样)
./GenerateDTIPubSub --DTIFramePubSub
然后,GenerateDTIPubSub调用DTIFramePubSub函数,该函数调用perl脚本,此路径可以正常工作
./cfg/GenerateDTIPubSub --DTIFramePubSub
这不起作用,找不到perl脚本
无法打开perl脚本“ Scripts / DTIPubSub.pl”:没有这样的文件或目录
但是perl脚本的路径不会仅更改bash文件路径
要变通解决此问题,您可以使用以下方法:
( cd cfg; ./GenerateDTIPubSub --DTIFramePubSub )
parens创建一个子shell,以避免为perl
进程以外的任何内容更改当前工作目录。
潜在的问题是GenerateDTIPubSub
假定当前工作目录是脚本的目录。 以下是有关解决方法的说明。
快速而肮脏的方法:
添加以下内容:
use FindBin qw( $RealBin ); BEGIN { chdir($RealBin); }
更明智的方法是:
首先,添加以下内容:
use FindBin qw( $RealBin );
然后更换
"Scripts/DTIPubSub.pl"
同
"$RealBin/Scripts/DTIPubSub.pl"
您可能需要在代码中进行多个类似的修复。
看来您必须(临时)更改当前工作目录,然后再调用脚本。 您可以使用以下技术来做到这一点
cd cfg && ./GenerateDTIPubSub --DTIFramePubSub
问题是基本脚本中的Perl脚本的路径需要更改为包含/cgf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.