Я хочу создать до-цикл, который читает название папки и сравнивает его с папками в 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
Кто-либо может помочь?
Используйте эти -d
тест для существования каталога:
read folder
until [[ $(readlink -f "/etc/skel/$folder") == /etc/skel/* && -d "/etc/skel/$folder" ]]
do
echo -n "Incorrect folder: "
read folder
done
это могло бы добиться цели:
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/
и т.д., таким образом, это могло быть дырой в системе безопасности тогда.