overexchange Asked: 2018-02-24 12:34:35 +0800 CST2018-02-24 12:34:35 +0800 CST 2018-02-24 12:34:35 +0800 CST 缺少操作数 - rm 命令 772 在下面的代码中, #!/bin/bash sDir=/a/b/c dDir=/d/e/f rDir="$dDir/recent" shopt -s nullglob : rm $rDir/$deviceName* : 问题行 rm $rDir/$deviceName*显示缺少回显命令的操作数 rm: missing operand Try 'rm --help' for more information. 如何解决此错误? bash rm 1 个回答 Voted Best Answer dhag 2018-02-24T12:47:06+08:002018-02-24T12:47:06+08:00 因为你有,所以当 glob 模式不匹配时shopt -s nullglob,该命令就会rm $rDir/$deviceName*扩展。rm 实际上,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*同时处理未设置或为空的两个变量,则参数将变为/*,这意味着所有文件都直接位于根目录中。
因为你有,所以当 glob 模式不匹配时
shopt -s nullglob
,该命令就会rm $rDir/$deviceName*
扩展。rm
实际上,
rm
不带参数调用会导致您看到以下消息:对比这两个:
一种简单的、不安全的方法来消除
rm
缺少参数的错误,将其称为rm -f
.请注意,它可能会好得多,相反,避免在
rm
首先使用由未设置变量制成的参数调用的情况下结束:set -o nounset
将禁止使用未设置变量(但不会对设置为空字符串的变量执行任何操作), 例如; 如果您要rm $x/$y*
同时处理未设置或为空的两个变量,则参数将变为/*
,这意味着所有文件都直接位于根目录中。