Como faço para analisar metacaracteres para entrada de função no bash?

0

Eu escrevi uma função no bash que obtém * como entrada e, portanto, deveria listar todos os arquivos nesse diretório particular. mas não faz. Aqui está o que eu escrevi:

    # a function that mass deletes files in a directory but asks before deleting
    yrm()
    {
    echo "The following files are going to be deleted:"
    ls "${1}"
    read -e -n 1 -p "Do you want to delete these files? Y/n" ANSWER
    ${ANSWER:="n"} 2> /dev/null 

    if [ $ANSWER == "Y" ]
        then
            rm $1
        else
            echo "aborted by user"

    fi

}

No entanto, eu testei com esses arquivos:

l1zard@Marvin:~/.rclocal/test$ ls *
test1.txt  test2.txt  test3.txt  test5.txt  test7.txt  test8.txt  test9.txt  testm7m767.txt

e eu recebo essa saída da minha função:

l1zard@Marvin:~/.rclocal/test$ yrm *
The following files are going to be deleted:
test1.txt
Do you want to delete these files? Y/nn
aborted by user

Como posso corrigi-lo para listar os arquivos como esperado?

    
por l1zard 13.07.2013 / 21:56

2 respostas

2

tente algo como:

ls "$@"
read ...
if [ "${ANSWER:=n}" = Y ]
then
  rm "$@"

Mas você também precisa testar se os arquivos foram especificados e se eles existem ..

    
por 13.07.2013 / 22:27
0

A função agora se parece com isso e funciona graças ao Scrutinizer:

# a function that mass deletes files in a directory but asks before realy delting those
yrm()
{
echo "The following files are going to be deleted:"
ls "$@"
rm -rI "$@"
}
    
por 13.07.2013 / 22:45