Имя папки, выдерживающее сравнение - сценарий

Я хочу создать до-цикл, который читает название папки и сравнивает его с папками в etc/skel. Если это не находит его, пользователь должен повторно ввести имя. Я также пытался использовать grep (вместо находки), но без результатов.

read folder_1;

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

Кто-либо может помочь?

0
задан 24 March 2019 в 01:49

2 ответа

Используйте эти -d тест для существования каталога:

read folder
until [[ $(readlink -f "/etc/skel/$folder") == /etc/skel/* && -d "/etc/skel/$folder" ]]
do
   echo -n "Incorrect folder: "
   read folder
done
1
ответ дан 6 October 2019 в 02:07

это могло бы добиться цели:

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

быть осторожным: при использовании -d "/etc/skel/$folder" как предложенный в сообщении muru, пользователи могли ввести противные вещи как .. или ../../../root/ и т.д., таким образом, это могло быть дырой в системе безопасности тогда.

1
ответ дан 6 October 2019 в 02:07

Другие вопросы по тегам:

Похожие вопросы: