linux - 如何将 uniq 命令的输出分配给 shell 脚本中的变量

标签 linux bash shell

我正在编写一个脚本来检查 WAS 服务器的状态,以确认服务器是已启动还是无法启动。服务器有 2 个 JVM。因此,为了检查 JVM 是否已启动,我使用了 uniq 命令。

假设 JVM1 失败,JVM2 启动,所以下面的命令

sh /home/wasprofile/`hostname`/bin/serverStatus.sh -all > /tmp/ServerState

grep "Application Server" /tmp/ServerState|awk '{print $7}'|uniq

将输出显示为:

FAILED
STARTED

那么现在我应该如何在运行时将此输出分配给两个不同的变量? 我的意思是这样的:

a=FAILED
b=STARTED

非常感谢您对此提供的任何帮助。

最佳答案

您可以使用带有进程替换的read:

read a b < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState)

PS:您可以避免 grepuniq 都使用 awk。

关于linux - 如何将 uniq 命令的输出分配给 shell 脚本中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914392/

相关文章:

linux - 想要确保 tty 写入由给定时间戳推送到硬件 (UART) 或失败

linux - 如何在不使用循环和 crontab 的情况下在 ubuntu 上重新启动程序?

excel - 高效地从 .xlsx 电子表格中提取工作表名称

linux - Bash:为什么我的 If 语句总是评估为真?

shell - 按端口查找进程

c - 当 grep 通过 POSIX 管道接收输入并输出到 POSIX 管道时,它的行为是什么?

c++ - 使用 C++ 的动态链接问题

macos - bash 脚本中的符号链接(symbolic link)不起作用

json - bash:遍历由索引选择的 JSON 数组的成员

linux - 从三列文件中删除重复记录