【发布时间】:2017-02-23 12:50:18
【问题描述】:
我正在完成我的大学作业,但我偶然发现了一个我自己无法解决的问题,也许这里有人可以提供帮助,因为我没有想法......
我必须将指定为参数列表的文件名传递给我的主脚本 (Bash),然后在另一个脚本 (Perl) 中处理这些文件。
这就是我在 Bash 中的做法:
perl DisplayGroupedByArtist.pl "$@"
然后在 perl 中我像这样遍历文件:
my @files = @ARGV;
foreach $file (@files)
{
#some stuff here
}
问题是 - 只要我不从目录外部调用脚本,它就可以正常工作。
test/bash_script.sh Samples/*.mp3
然后,传递给我的 Perl 脚本的值只是“Samples/* .mp3"。
我想值得一提的是,在我的 Bash 脚本中,我有这一行来确保我从正确的目录调用 Perl 脚本:
cd "$(dirname "$0")"
更新:
说清楚:这里的主要问题是,如果我像 bash_script.sh *.mp3 这样运行脚本 - 它会将文件列表毫无问题地传递给 Perl 脚本,而如果我像 test/bash_script.sh *.mp3 那样执行它,则传递给 Perl 的值只是一个字符串“*.mp3”,而不是文件列表。
【问题讨论】:
-
如果删除
cd行会怎样? -
如果我这样做了,那么“perl DisplayGroupedByArtist.pl”根本不起作用,返回“无法打开 perl 脚本“DisplayGroupedByArtist.pl”:没有这样的文件或目录”。
-
修复脚本的路径,然后。
perl "$(dirname "$0")"/DisplayGroupedByArtist.pl "$@". -
不幸的是 - 不能解决问题。仍然是完全相同的行为。
-
哪种行为?没有这样的文件或目录,或者没有找到文件?