我想创建一个until循环,读取文件夹的名称并将其与中的文件夹进行比较etc/skel
。如果找不到,用户必须重新输入名称。我也尝试使用grep(而不是find),但没有结果。
read folder_1;
until [ $folder_1 != find /etc/skel/ -name "$folder_1" -type d ]; do
echo -n "Incorrect folder: "
read folder_1;
done
有人可以帮忙吗?
答案1
使用-d
测试目录是否存在:
read folder
until [[ $(readlink -f "/etc/skel/$folder") == /etc/skel/* && -d "/etc/skel/$folder" ]]
do
echo -n "Incorrect folder: "
read folder
done
答案2
这可能会奏效:
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/
等令人讨厌的内容,因此这可能是一个安全漏洞。