Script do GAWK explicado

0

Alguém pode me explicar o que esse script em cada linha? Eu não posso executar isso porque acho que a sintaxe está incorreta.

#! /bin/bash
v='echo $@|gawk '{print $NF}''
if[-d $v];then
for v2 in $@;do
if test $2 != $v;then
ln $v2 $v/$v2
rm $v2
fi
done
    
por Thomas Dickey 25.08.2016 / 22:11

1 resposta

0

A maior parte é shell, e isso é incorreto porque faltam espaços em branco na primeira instrução if. Também

  • o primeiro if-statement não possui um equilíbrio fi
  • o $@ deve ser cotado "$@"
  • o $2 provavelmente deve ser $v2

O teste -d é suspeito, já que o gawk deveria estar imprimindo um número (não um nome de diretório). Ainda assim, você poderia estar testando um diretório nomeado para um número ...

Como sugerido em um comentário, se você fez essas correções, o script tentaria remover tudo que não é o mesmo que o último parâmetro do script e criar um link para esses arquivos removidos no diretório nomeado pelo parâmetro final . (Apenas usando mv seria mais simples).

Aqui está um script fixo sugerido:

#! /bin/bash
v='echo "$@"|gawk '{print $NF}''
if [ -d $v ];then
  for v2 in "$@";do
    if test $v2 != $v;then
      ln $v2 $v/$v2
      rm $v2
    fi
  done
fi
    
por 25.08.2016 / 22:16

Tags