如何使用上一个命令的输出?

ide*_*con 2 command-line bash scripts

我试图删除带有.class扩展名的文件夹中的所有文件,所以我制作了一个小的 shell 脚本。谁能告诉我为什么它不起作用并为我的问题提供解决方案?

剧本:

#!/bin/bash

ls | grep .class  
for i in $*
do    
rm $i
done
Run Code Online (Sandbox Code Playgroud)

ter*_*don 7

首先,要删除带有.class扩展名的所有文件,您只需要:

rm *.class
Run Code Online (Sandbox Code Playgroud)

在任何情况下,作为一般规则,您真的不应该尝试解析ls. 对于几乎任何奇怪的文件名,它都会失败

为了将来参考,要遍历命令的结果,请使用while循环。例如:

command | while read i; do rm "$i"; done
Run Code Online (Sandbox Code Playgroud)