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"/*)
(最初のディレクトリパラメータにスペースが含まれている場合は引用符が必要です。)