12

所以有人向我展示了如何使用条件来测试用户是否输入了密码。我想以他们的例子更进一步并使用循环(至少我认为它是这样称呼的)。

这是他们的例子:

read -s -p "Enter new password: " NEWPASS

if test "$NEWPASS" = ""; then
    echo "Password CAN NOT be blank re-run sshd_config"
    exit 1;
fi

我不想退出脚本,而是希望它继续要求输入,直到有一些输入。

我想发表这样的声明,但我做错了:(现在使用顶级示例)

用户有机会输入新密码并填写变量值。

read -s -p "Enter new password:" NEWPASS
echo ""

下一部分检查变量以查看它是否包含值,当值为 null 时,它请求用户无限期地填充该值。( 一个循环)

while [[ -z "$NEWPASS" ]]; do
echo ""
echo "Password CAN NOT be blank"
echo ""
read -s -p "Enter new password:" NEWPASS;
echo ""
done

此行搜索包含另一个文件使用的一组变量的文件。然后它在文件中搜索包含 PASS=.*(.* 表示任何内容)的行,然后写入 PASS=$NEWPASS($NEWPASS 是变量)

sed -i -e"s/^PASS=.*/PASS=$NEWPASS/" /etc/sshd.conf   

感谢您的所有帮助,我将使用它并从中学习。

4

2 回答 2

25

这个while循环应该可以工作:

while [[ -z "$NEWPASS" ]]
do
  read -s -p "Enter new password: " NEWPASS
done
于 2013-10-22T19:16:49.603 回答
5
while read -s -p 'Enter new password: ' NEWPASS && [[ -z "$NEWPASS" ]] ; do
 echo "No-no, please, no blank passwords!"
done
于 2013-10-22T19:17:00.673 回答