我试图每次使用这个以不同的文件作为参数执行一个脚本 n 次:
ls /user/local/*.log | xargs script.pl
(script.pl 接受文件名作为参数)
但是脚本只执行一次。如何解决这个问题?我做的不对吗?
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
标志。
我希望这有帮助:
for i in $(ls /usr/local/*.log)
do
script.pl $i
done
我会避免使用ls
,因为这通常是许多系统上的别名。例如,如果您ls
产生彩色输出,那么这将不起作用: for i in ls
; 做 ls $i; 完成
相反,您可以让 shell 为您扩展通配符: for i in /usr/local/*.log; 做脚本.pl $i; 完毕