我正在尝试将变量 grep 到文件中,但由于某种原因我不能。这是代码:
while [[ $user ]]
do
read user
if grep -q "^${user}" date.txt; then
echo This user already exists
read user
else
break
fi
done
如果找不到用户,它应该中断 while 循环。但我无法使这个工作,我不知道为什么
答案1
看起来您正在编写某种形式的验证输入循环。
这通常是在无限循环中完成的,一旦输入有效输入就退出:
while true; do
read data
if data-is-valid; then
break
fi
done
在你的情况下:
while true; do
read -r -p 'Enter username: ' username
if ! grep -q -e "^$username\>" date.txt; then
break
fi
echo 'User already exists, try again' >&2
done
\>
命令中的模式通过要求单词直接在字符串之后结束来grep
确保用户与文件中的theo
用户不匹配。theodore
date.txt