带有变量的Linux rm命令

时间:2014-11-05 17:30:09

标签: 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
# Why not?


badname= ls | grep " "

# Try this:
echo "$badname"

rm "$badname"

exit 0

2 个答案:

答案 0 :(得分:1)

您需要命令替换才能将ls | grep " "的值转换为badname变量

以下任一选项都可以使用:

badname=`ls | grep " "`

badname=$(ls | grep " ")

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

答案 1 :(得分:0)

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

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

ls | grep " " > $TMPFILE

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