passa argumentos de script para script

1

Eu tenho um script para excluir arquivos com mais de x minutos / dias.

find $1 -type f -mmin +$2 -exec rm -f {} \; (name is test2.sh)

Eu preciso passar argumentos para test2.sh de outro script test3.sh , por exemplo.

    
por Itso 11.01.2018 / 09:18

1 resposta

0

Supondo que as expansões de parâmetro em test2.sh estão corretamente citadas como

find "$1" -type f -mmin +"$2" -exec rm -f {} \;

então test3.sh pode ter uma chamada para test2.sh assim:

test2.sh "some file name" 5

$1 in test2.sh expandirá para a string some file name e $2 expandirá para 5 .

Isso pressupõe que test2.sh esteja localizado em um diretório listado na variável PATH de test3.sh . Se não, use um caminho completo (absoluto ou relativo), por exemplo:

./test2.sh "some file name" 5

Ele também pressupõe que test2.sh foi criado pela primeira vez com chmod +x test2.sh e que ele possui uma #! -line correta.

Após esclarecimento no comentário abaixo:

O script test3.sh pode fazer (assumindo que é um script bash ):

read -p 'Enter directory name: ' dirname
read -p 'Enter number of days: ' days

minutes=$(( days * 60 * 24 ))

./test2.sh "$dirname" "$minutes"

O próximo passo seria validar a entrada do usuário para que $days seja um inteiro real e para que $dirname seja um nome válido de um diretório.

Se não for bash , mas sh :

printf 'Enter directory name: '
read -r dirname

(etc.)

A maioria das implementações de find também tem -delete :

find "$1" -type f -mmin +"$2" -delete
    
por 11.01.2018 / 09:47