缺少操作数 - rm 命令

缺少操作数 - rm 命令

在下面的代码中,

#!/bin/bash

sDir=/a/b/c
dDir=/d/e/f
rDir="$dDir/recent"

shopt -s nullglob
:    
rm $rDir/$deviceName*
:

问题行 rm $rDir/$deviceName*显示缺少操作数而没有 echo 命令

rm: missing operand
Try 'rm --help' for more information.

如何解决这个错误?

答案1

因为你有shopt -s nullglob,所以该命令rm $rDir/$deviceName*会扩展到rm当 glob 模式不匹配任何内容时。

事实上,rm不带参数的调用会导致您看到以下消息:

$ rm
rm: missing operand
Try `rm --help' for more information.

对比这两个:

$ rm nonexistent*
rm: cannot remove `nonexistent*': No such file or directory

$ (shopt -s nullglob; rm nonexistent*)
rm: missing operand
Try `rm --help' for more information.

一种简单但不安全的消除因缺少参数而导致的错误的方法rm是将其称为rm -f.

请注意,避免最终陷入这样的情况可能会更好rm:首先使用由未设置的变量组成的参数调用:set -o nounset将禁止使用未设置的变量(但不会对设置为空字符串的变量执行任何操作) ), 例如;如果您要rm $x/$y*对两个变量都未设置或为空,则参数将变为/*,意味着所有文件都直接位于根目录中。

相关内容