사용자 생성 변수를 외부 명령에 전달해 보세요.

사용자 생성 변수를 외부 명령에 전달해 보세요.

사용자 입력을 요청한 다음 해당 변수를 find 명령에 전달하는 bash 스크립트가 있습니다. 내가 아는 방법으로 변수를 인용/이스케이프 처리해 보았지만 항상 실패합니다.

read -p "Please enter the directory # to check: " MYDIR
count=`/usr/bin/find /path/to/$MYDIR -name *.txt -mmin -60 | wc -l`
if [ $count != 0 ]
    then 
         echo "There have been $count txt files created in $MYDIR in the last hour"
    else 
         echo "There have been no txt files created in the last hour in $MYDIR "
    fi

실행하면 다음과 같은 결과가 나타납니다.

Please enter the directory # to check: temp_dir

/usr/bin/find: paths must precede expression
Usage: /usr/bin/find [-H] [-L] [-P] [path...] [expression]
There have been no txt files created in the last hour in temp_dir 

답변1

-name옵션에서 패턴을 인용해야 합니다.

count="$(/usr/bin/find /path/to/$MYDIR -name '*.txt' -mmin -60 | wc -l)"

따옴표를 사용하지 않으면 쉘이 패턴을 확장합니다. 귀하의 명령은 다음과 같습니다

/usr/bin/find "/path/to/$MYDIR" -name file1.txt file2.txt ... -mmin -60 | wc -l

.txt이름이 to 옵션으로 끝나는 모든 파일을 제공합니다 -name. 이로 인해 구문 오류가 발생합니다.

관련 정보