SóProvas


ID
928567
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2008
Provas
Disciplina
Programação
Assuntos

Acerca da programação em linguagens shell de script, julgue os
itens subseqüentes.

Considerando o código a seguir, é correto afirmar que não há erros de sintaxe; é possível executar o código para copiar ou mover arquivos do diretório identificado por dir1 para o identificado por dir2; os arquivos de subdiretórios em dir1, caso existam, serão copiados para dir2.

#! /bin/csh -f
echo 'Diretorio de origem:'
set dir1=($<)
echo 'Diretorio de destino:'
set dir2=($<)
if ((! -d $dir1)**(! -d $dir2)) then
         echo "Diretorios incorretos."
endif
echo 'Extensao dos arquivos:'
set ext=($<)
echo 'Digite comando [cp ou mv]:'
set comando=($<)
switch ($comando)
case 'cp':
         foreach arquivo (dir1/*)
              if (! -d $arquivo && $arquivo =~ *.ext) then
                   cp $arquivo dir2
              endif
         end
case 'mv':
         foreach arquivo (dir1/*)
              if (! -d $arquivo && $arquivo =~ *.ext) then
                   mv $arquivo dir2
              endif
         end
default:
         echo 'Comando invalido'
         exit 01
endsw
exit 0

Alternativas
Comentários
  • Após instalar o tcsh em meu notebook, e rodar o script com os parametros -v e -x para caráter de debug, recebi o seguinte erro:

    if: Expression Syntax

    O que me leva a crer que foi um erro por conta do ** no if quando deveria ser um logical or  || . 
    http://www.cs.duke.edu/csl/docs/unix_course/intro-130.html

  • Também não rodou no meu Linux
  • Ops...anos depois eu acho que percebi o erro.

    Para fechar um "if" em bash você utiliza "fi", e não "endif" .

     

    https://linuxconfig.org/bash-scripting-tutorial#h6-simple-bash-if-else-statement