このスクリプトが私のソースディレクトリのファイルをコピーしないのはなぜですか?

このスクリプトが私のソースディレクトリのファイルをコピーしないのはなぜですか?

2つのパラメータを使用してスクリプトを実行しています。

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"/*)

(最初のディレクトリパラメータにスペースが含まれている場合は引用符が必要です。)

関連情報