带变量的Linux-rm命令

带变量的Linux-rm命令,linux,scripting,rm,Linux,Scripting,Rm,我和我的合作伙伴在使用这个基本的Linux脚本时遇到了麻烦。我们的导师把一个高级Linux脚本包交给我们调试,我们都迷路了。假设脚本将删除文件名中包含嵌入空格的文件,而我仍然使用实际的rm命令。我得到“缺少操作数”,我不知道该怎么办 #!/bin/bash # This script is supposed to delete all filenames in current directory #+ containing embedded spaces. # It doesn't work

我和我的合作伙伴在使用这个基本的Linux脚本时遇到了麻烦。我们的导师把一个高级Linux脚本包交给我们调试,我们都迷路了。假设脚本将删除文件名中包含嵌入空格的文件,而我仍然使用实际的rm命令。我得到“缺少操作数”,我不知道该怎么办

#!/bin/bash

# This script is supposed to delete all filenames in current directory
#+ containing embedded spaces.
# It doesn't work
# Why not?


badname= ls | grep " "

# Try this:
echo "$badname"

rm "$badname"

exit 0

您需要使用命令子项将
ls | grep”“
的值放入
badname
变量中

以下任一选项均有效:

badname=`ls | grep " "`

您可以阅读有关命令替换的更多信息。 希望这有帮助

badname=ls | grep”“
显然是错误的。试试这个:

#!/bin/bash
TMPFILE="tmp.txt"

ls | grep " " > $TMPFILE

cat $TMPFILE | while read -r LINE
do
        rm "$LINE"
done

您收到了什么错误或消息?我收到了以下错误“badname=ls | grep”“”我认为声明变量没有问题,因为脚本实际上回显了要删除的文件。我认为问题在于rm命令。谢谢你的回复!你告诉badname它等于文本“ls | grep”`这就是为什么它会呼应它。您没有正确分配变量。您需要使用命令替换将
ls | grep”“
的值放入变量中。阅读答案中的链接。这很好,但我不认为这是他想要的,因为它与原文有很大的不同。他不在这里,所以我不能问他。我认为badname=ls | grep“”工作得很好,因为它实际上回显了错误的文件名,只是没有删除它们。
#!/bin/bash
TMPFILE="tmp.txt"

ls | grep " " > $TMPFILE

cat $TMPFILE | while read -r LINE
do
        rm "$LINE"
done