オペランドの欠落 - rm コマンド

オペランドの欠落 - rm コマンド

以下のコードでは

#!/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.

このエラーを解決するには?

答え1

があるため、globパターンが何も一致しないときにshopt -s nullglobコマンドがrm $rDir/$deviceName*拡張されます。rm

実際にrmパラメータなしで呼び出すと、次のメッセージが表示されます。

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

次の2つを比較します。

$ 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*と、パラメータはになります。/*つまり、すべてのファイルがルートディレクトリに直接配置されます。

関連情報