Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在变量中搜索特定的文本?_Linux_Shell_Scripting - Fatal编程技术网

Linux 如何在变量中搜索特定的文本?

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

我正在编写一个脚本,提示用户输入用户名。输入后,脚本使用“rwho”命令获取登录到网络的用户列表。它应该将他们输入的文本(用户名)与rwho命令的结果进行交叉检查

如果找到匹配项,则会显示一条消息,说明是这样,如果不是这样,则会让用户意识到这一点

以下是脚本和我迄今为止的尝试:

#!/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:事实上,没有结束的反勾号,但是有一个单引号可能应该是倒引号。对。我认为回执是故意的,而且写错了。