Linux 如何在变量中搜索特定的文本?
我正在编写一个脚本,提示用户输入用户名。输入后,脚本使用“rwho”命令获取登录到网络的用户列表。它应该将他们输入的文本(用户名)与rwho命令的结果进行交叉检查 如果找到匹配项,则会显示一条消息,说明是这样,如果不是这样,则会让用户意识到这一点 以下是脚本和我迄今为止的尝试:Linux 如何在变量中搜索特定的文本?,linux,shell,scripting,Linux,Shell,Scripting,我正在编写一个脚本,提示用户输入用户名。输入后,脚本使用“rwho”命令获取登录到网络的用户列表。它应该将他们输入的文本(用户名)与rwho命令的结果进行交叉检查 如果找到匹配项,则会显示一条消息,说明是这样,如果不是这样,则会让用户意识到这一点 以下是脚本和我迄今为止的尝试: #!/bin/sh # # User network checking script # # Using rwho command to get user list OUTPUT="$(rwho)" echo "${O
#!/bin/sh
#
# User network checking script
#
# Using rwho command to get user list
OUTPUT="$(rwho)"
echo "${OUTPUT}"
# Prompt for username
echo "Please enter your username: "
read username
# Input validation
if [ -z "$username"]
then
echo "No username supplied"
echo "Please enter your username: "
read username
fi
# Search for user
if `echo ${OUTPUT} | grep "${username}" 1>/dev/null 2>&1'
then
echo "$username is logged in."
else
echo "$username is not present."
fi
我总是在搜索用户部分时出错。我对Linux没有太多的了解,所以如果有人能解决这个问题并帮助我,我将不胜感激。你使用引号的方式很奇怪
if echo "$OUTPUT" | grep -q "$username"
应该有用
-q
使grep
安静(并且比重定向要短)。你对引号的使用很奇怪
if echo "$OUTPUT" | grep -q "$username"
应该有用
-q
使grep
安静(并且比重定向时间短)。你会收到“错误”是吗?也许你应该给我们看看?同时检查语法,您在grep
管道上缺少一个结束符`
。还可用于获取代码的一般有用建议。您会遇到“错误”,是吗?也许你应该给我们看看?同时检查语法,您在grep
管道上缺少一个结束符`
。还可以使用获取代码的一般有用建议。因为在编写时,原始代码运行echo | grep
管道,然后尝试将其输出作为命令运行(因为包装回标)。@EtanReisner:事实上,没有结束回标,但是有一个单引号可能应该是倒引号。对。我认为反勾号是故意的,而且是写错的。因为在编写时,原始代码运行echo | grep
管道,然后尝试将其输出作为命令运行(因为反勾号被包装)。@EtanReisner:事实上,没有结束的反勾号,但是有一个单引号可能应该是倒引号。对。我认为回执是故意的,而且写错了。