Por que esse script não está copiando os arquivos dentro do meu diretório de origem?

1

Estou executando um script com dois argumentos.

myshell.sh source destination 

Então eu quero copiar todos os arquivos (não incluindo subdiretórios) dentro do diretório fonte e copiá-los para o diretório de destino.

Eu tenho o programa shell e a fonte no meu diretório atual

Aqui está a parte do código que me causa problemas '

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

A coisa é ... Ele está copiando todos os arquivos dentro do diretório atual e não dentro do diretório de origem.

Eu acho que o problema reside aqui

foreach filename (* $1)

Como eu poderia mudar isso para que funcionasse?

Estou usando o shell tcsh pelo caminho

    
por alkabary 31.03.2016 / 01:51

1 resposta

1

Não só copiará cada arquivo em seu diretório atual, mas também lhe dirá que não está copiando o diretório source . Esta linha

foreach filename (* $1)

é de fato o problema, deveria ser:

foreach filename ("$1"/*)

(aspas são necessárias caso seu primeiro argumento contenha espaços).

    
por 31.03.2016 / 07:17