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
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?
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
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.