如何用存储在bash变量中的运行this perl script的东西替换[RUN_ABOVE_PERL_SORTING_SCRIPT_HERE]
?
#!/usr/bin/env bash
# The perl script to sort getfacl output:
# https://github.com/philips/acl/blob/master/test/sort-getfacl-output
find /etc -name .git -prune -o -print | xargs getfacl -peL | [RUN_ABOVE_PERL_SORTING_SCRIPT_HERE] > /etc/.facl.nogit.txt
注意:
答案 0 :(得分:2)
使用bash read command,它会将perl脚本读入一个变量,该变量稍后将在bash脚本中执行。
#!/usr/bin/env bash
# sort getfacl output: the following code is copied from:
# https://github.com/philips/acl/blob/master/test/sort-getfacl-output
read -r -d '' SCRIPT <<'EOS'
#!/usr/bin/env perl -w
undef $/;
print join("\n\n", sort split(/\n\n/, <>)), "\n\n";
EOS
find /etc -name .git -prune -o -print | xargs getfacl -peL | perl -e "$SCRIPT" > /etc/.facl.nogit.txt
答案 1 :(得分:1)
Run Perl Script From Unix Shell Script对此进行了说明。
在这里适用:
您可以使用-e
/ -E
将代码传递给Perl。
perl -e"$script"
或
perl -e"$( curl "$url" )"
您可以通过STDIN传递代码。
printf %s "$script" | perl -e"$script"
或
curl "$url" | perl
(这对您不起作用,因为您需要STDIN。)
您可以创建一个虚拟文件。
perl <( printf %s "$script" )
或
perl <( curl "$url" )
您可以利用perl
的{{1}}选项。
(如果要动态下载脚本,则不适用。)
以上所有条件均假定已执行以下命令:
-x
上面的某些假设已经执行了以下命令:
url='https://github.com/philips/acl/blob/master/test/sort-getfacl-output'