我正在做我的大学作业,我偶然发现了一个我无法自己解决的问题,也许这里有人可以提供帮助,因为我没有想法......
我必须将指定为参数列表的文件名传递给我的主脚本 (Bash),然后在另一个脚本 (Perl) 中处理这些文件。
这就是我在 Bash 中的做法:
perl DisplayGroupedByArtist.pl "$@"
然后在 perl 中我像这样遍历文件:
my @files = @ARGV;
foreach $file (@files)
{
#some stuff here
}
问题是 - 只要我不从目录外部调用脚本,它就可以正常工作。
test/bash_script.sh Samples/*.mp3
然后,传递给我的 Perl 脚本的值不是“Samples/01 Lycia - Frozen.mp3 Samples/01 Slowdive - Alison.mp3 Samples/01 The Cure - Plainsong.mp3”之类的东西,而是简单的“Samples/* .mp3”。
我想值得一提的是,在我的 Bash 脚本中我有这一行来确保我从正确的目录调用 Perl 脚本:
cd "$(dirname "$0")"
更新:
澄清一下:这里的主要问题是,如果我运行像 bash_script.sh *.mp3
这样的脚本,它会将文件列表毫无问题地传递给 Perl 脚本,而如果我执行它像 test/bash_script.sh *.mp3
,传递给 Perl 的值只是一个字符串“*.mp3”,而不是文件列表。
最佳答案
你必须调整参数; Samples/*.mp3
与调用脚本的位置相关,来自,而不是脚本的位置。
tests/bash_script.sh ../Samples/*.mp3
关于linux - 将文件名参数从 Bash 传递到 Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416253/