Comparação do nome da pasta - script

0

Eu quero criar um loop até que leia o nome de uma pasta e a compare com as pastas em etc/skel . Se não encontrar, o usuário deverá inserir novamente o nome. Eu também tentei usar grep (em vez de find), mas sem resultados.

read folder_1;

until [ $folder_1 != find /etc/skel/ -name "$folder_1" -type d ]; do
   echo -n "Incorrect folder: "
   read folder_1;
done

Alguém pode ajudar?

    
por Makaveli 07.02.2015 / 17:10

2 respostas

1

Use o teste -d para a existência de um diretório:

read folder
until [[ $(readlink -f "/etc/skel/$folder") == /etc/skel/* && -d "/etc/skel/$folder" ]]
do
   echo -n "Incorrect folder: "
   read folder
done
    
por muru 07.02.2015 / 18:51
1

isso pode funcionar:

read folder_1

until [ 'find /etc/skel/ -maxdepth 1 -type d -name "${folder_1}" | wc -l' == '1' ]; do
    echo -n "Incorrect folder: "
    read folder_1
done

tenha cuidado: ao usar -d "/etc/skel/$folder" como sugerido na postagem de muru, os usuários podem inserir coisas desagradáveis como .. ou ../../../root/ etc., então isso pode ser uma falha de segurança.

    
por Thomas Kaltenbrunner 07.02.2015 / 18:44