이 스크립트가 내 소스 디렉터리의 파일을 복사하지 않는 이유는 무엇입니까?

이 스크립트가 내 소스 디렉터리의 파일을 복사하지 않는 이유는 무엇입니까?

두 개의 매개변수를 사용하여 스크립트를 실행하고 있습니다.

myshell.sh source destination 

그래서 원본 디렉터리(하위 디렉터리 제외) 내부의 모든 파일을 복사하여 대상 디렉터리에 복사하고 싶습니다.

현재 디렉토리에 쉘 프로그램과 소스 코드가 있습니다

이것은 나에게 문제를 일으키는 코드의 일부입니다.'

mkdir $2
set count=0

foreach filename (* $1)
    echo $filename
    if(-d $filename) then
        echo "Not copying subdirectory $filename"
    else 
        echo "copying $filename"
        cp $filename $2
        count++
    endif
end

문제는... 소스 디렉터리의 파일이 아닌 현재 디렉터리의 모든 파일을 복사한다는 것입니다.

내 생각엔 문제가 여기에 있는 것 같아

foreach filename (* $1)

제대로 작동하도록 어떻게 변경할 수 있나요?

그건 그렇고, 나는 tcsh 쉘을 사용하고 있습니다

답변1

현재 디렉터리의 모든 파일을 복사할 뿐만 아니라 디렉터리를 복사하지 않았다는 사실도 알려줍니다 source. 이 줄

foreach filename (* $1)

이것이 실제로 질문입니다. 다음과 같아야 합니다.

foreach filename ("$1"/*)

(첫 번째 디렉토리 매개변수에 공백이 포함된 경우 따옴표가 필요합니다.)

관련 정보