首页 > 解决方案 > 如果没有返回则执行操作

问题描述

如果 netstat 未返回任何结果,我将尝试回显“未找到”。但是,如果它确实返回结果,则显示 netstat 结果。

我正在尝试用谷歌搜索我正在使用的东西,但找不到太多关于它的信息。

#!/bin/bash

echo "Which process would you like to run netstat against?"
read psname
echo "Looking for '$psname'"
sleep 2
command=$(netstat -tulpn | grep -e $psname)
[[ ! -z $command ]]

这与 [[ !-z $命令]]

标签: bashshell

解决方案


[[ ! -z $command ]]不会“显示”任何输出。

使用 if/else 设置来显示结果;

if [[ ! -z $command ]]; then
    echo "$psname was found!"
else
    echo "No process named '${psname}' found!"
fi

简写变体;

[[ ! -z $command ]] && echo "$psname was found!" || echo "No process named '${psname}' found!"

请注意,如果用户输入可能包含空格,则""在 grep 字符串周围使用它会更省事;

command=$(netstat -tulpn | grep -e "$psname")

何时在 shell 变量周围加上引号?


推荐阅读