我在bash中制作了一个聊天脚本,我想检查netcat
是否正在运行。
我已经尝试了pgrep
但是它正在运行,但它在终端中输出了一个错误,但它仍然保持正常。
这是该脚本的一部分:
function session()
{
echo -n "Port (default is 3333): "
read port
if [ -n "${port}" ]
then
clear
echo "Only 2 users can talk to each other simultaneously."
echo "To send a message, simply write and hit enter. Press Ctrl+C to quit."
nc -l -p ${port}
if [ pgrep "nc -l -p ${port}" ]
then
echo "${l_name} logged in to chat session"
else
clear
new
fi
else
echo "Invalid port!"
new
fi
}
答案 0 :(得分:1)
不要将prep
放在[ ]
内。这不会运行prep
命令,只是将单词pgrep
视为test
命令的参数。
您还需要使用-f
选项使pgrep
与整个命令行匹配,而不仅仅是程序名称。
应该是
if pgrep -f "nc -l -p ${port}"
then
...
else
...
fi
答案 1 :(得分:0)
尝试使用“-x”参数运行脚本。这显示了每条运行的行。以下是手册页中的说明:
-x:扩展每个简单命令后,用于命令,大小写 命令,选择命令或算术命令,显示 扩展PS4的价值,然后是命令及其扩展 参数或相关单词列表。
以下是一个示例脚本:
#!/bin/bash
for i in $( ls ); do
echo item: $i
done
如果您使用 -x 运行,则可以看到每个命令都以+符号头运行:
$ bash -x list.sh
++ ls
+ for i in '$( ls )'
+ echo item: list.sh
item: list.sh