如何根据 bash 的基金结果填写案例陈述?

How to fill a case statement baised on the outcome of a find with bash?

如何根据文件夹中的目录在 bash 脚本中填写 case 语句。 所以我在这个文件夹中有以下文件夹 /opt/servers/ 我有以下目录:
服务器 1
服务器 2
服务器 3

这些目录中的每一个都等于 Websphere Liberty 中的一个服务器名。

如何将它们放入案例陈述中?

我也想在多台服务器上使用这个脚本,服务器名称不一样,所以我不想把服务器的名称硬编码在脚本中。因为如果要添加或删除额外的服务器,我需要再次编辑脚本并将该服务器名放在那里。

如果我使用以下内容,我将获得所有目录:

find /opt/servers/ -type d -name *server* | sort | awk -F'/' '{print $(NF-0)}'

但是如果我把查找结果放在一个变量中并再次回显它,它会在一行上打印所有服务器:

SERVERS=`find /opt/wlp/ -type d -name *server*| sort | awk -F'/' '{print $(NF-0)}'`
echo $SERVERS
server1 server2 server3

我该如何解决这个问题? The goal is, that when a server is selected I get a new menu, where I can stop or start the server. 所以脚本会做类似的事情:

Hello please select one of the servers below:
1) server1
2) server2
3) server3

You have selected: server1
What do you want to do with this server?
1) stop
2) start

You have selected: stop
Are you sure?
1) Yes
2) No

You have selected: Yes
server1 will be stopped.

您可以使用服务器目录路径填充 bash 数组,然后使用它来实现您的逻辑:

#!/bin/bash

servers=( /opt/servers/*server* )

echo "Hello please select one of the servers below:"
select server in "${servers[@]##*/}"
do
    [[ $server ]] || continue
    echo "You have selected: $server"
    break
done

echo "What do you want to do with this server?"
select action in stop start
do
    [[ $action ]] || continue
    echo "You have selected: $action"
    break
done

# etc...