我每次尝试使用不同的文件作为参数执行n次脚本n次:
ls /user/local/*.log | xargs script.pl
(script.pl接受文件名作为参数)
但脚本只执行一次。怎么解决这个?我没做错吗?
答案 0 :(得分:2)
ls /user/local/*.log | xargs -rn1 script.pl
我猜你的脚本只需要一个参数,你需要告诉xargs。
如果输入列表为空,则传递-r会有帮助
请注意,以下内容通常更好:
find /user/local/ -maxdepth 1 -type f -name '*.log' -print0 |
xargs -0rn1 script.pl
它将处理报价和目录更安全。
要查看xargs实际执行的内容,请使用-t
标志。
答案 1 :(得分:0)
我希望这会有所帮助:
for i in $(ls /usr/local/*.log)
do
script.pl $i
done
答案 2 :(得分:0)
我会避免使用ls
,因为这通常是许多系统的别名。例如。如果您的ls
生成彩色输出,那么这将不起作用:
我在ls
;做ls $ i;完成
相反,你可以让shell为你扩展通配符: 我在/usr/local/*.log; do script.pl $ i;完成