文件夹名称比较 - 脚本

文件夹名称比较 - 脚本

我想创建一个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/等令人讨厌的内容,因此这可能是一个安全漏洞。

相关内容