我正在用bash编写一个小程序,该程序将向系统上的另一个用户发送电子邮件,但是在继续之前,我无法检查系统上是否存在用户名。这是循环:
while [ -z cat /etc/passwd | grep $username ] #<------ Line 47
do
echo "please input a valid username:"
read username
done
文件/etc/passwd
包含服务器所有用户的用户名,因此我将其用于特定的用户名。如果输出的字符串长度为0,则-z
运算符为true,因此我正在使用该运算符来确保grep没有返回输出。命令cat /etc/passwd | grep $username
在命令行中运行正常,但在循环中运行不正常。当我运行程序时,出现错误
line 47: [: missing `]"
grep: ]: No such file or directory
有人知道为什么这行不通吗? 谢谢