피연산자 누락 - 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.

다음 두 가지를 비교하십시오.

$ 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*않거나 비워두면 매개변수는 가 됩니다. /*즉, 모든 파일이 루트 디렉터리에 직접 있게 됩니다.

관련 정보