我想编写脚本来获取给定列表的值,不带前缀、后缀扩展。这部分工作成功。
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done
然后应该将变量传递给 for 循环。之后该变量应该在命令下运行,
/usr/bin/perl -config=$variable -update
上面的命令需要反复尝试使用变量。有人知道解决这个问题吗?
答案1
使用原始循环并将其扩展以使用您的perl
命令:
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
/usr/bin/perl -config="$(basename "${name#awstats.}" .conf)" -update
done
或者,按照您的建议使用变量,
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
config=$(basename "${name#awstats.}" .conf)
/usr/bin/perl -config="$config" -update
done
然而,调用perl
有点令人困惑,因为似乎有一个实际的 Perl脚本命令行中丢失。我本以为实际的调用看起来像
perl /some/path/somescript.pl -config="$config" -update
要不就
/some/path/somescript.pl -config="$config" -update
我也很困惑你所说的“同时”是什么意思。您可能想perl
同时运行多个命令?
#!/bin/bash
cd /aws/awstats/
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done |
xargs -I {} -P 4 /some/path/somescript.pl -config="{}" -update
这将使 Perl 脚本的最多四个实例同时运行。