linux - 捕获变量中的命令输出并抑制它

标签 linux bash shell pipe

我想在 shell 脚本中捕获以下命令的输出:

echo "User-Name=root,User-Password=root123" | radclient 192.168.19.104 auth testing123

我有一个 shell 脚本如下:

FILE=server

        while IFS="\t" read -r ip key;
        do
                case "$ip" in
                        "0.0.0.0") continue ;;
                esac
                echo "User-Name=root,User-Password=root123" | radclient $ip auth $key

        done < "$FILE"
        exit 1

编辑:删除了多余的引号,它可以工作。

现在,运行命令后:

echo "User-Name=root,User-Password=root123" | radclient 192.168.19.104 auth testing123

它返回以下输出:(实际上radclient返回以下输出)。

Received response ID 1, code 2, length = 33
    Reply-Message = "Hello, root"

如何捕获命令的输出。

编辑:根据下面的答案,我使用了:

OUTPUT=`echo "User-Name=$username,User-Password=$passwd" | radclient $ip auth $key`

这会捕获 OUTPUT 中返回的字符串。 但是它也会在屏幕上打印输出。

我们如何抑制 radclient 的输出在屏幕上打印并将输出存储在 OUTPUT 中。

最佳答案

您可以将输出存储在如下变量中:

OUTPUT=$(echo "User-Name=root,User-Password=root123" | radclient $ip auth $key)
echo "$OUTPUT"

关于linux - 捕获变量中的命令输出并抑制它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366668/

相关文章:

linux - 如何进入主栈

c - fopen、fprintf、fclose 的单行代码?

database - 根据某种模式将文件拆分为多个文件并获取一些信息

bash - 运行docker exec命令时如何使用docker容器的env变量

shell - 如果 [ -z "${FILE_LIST}"] 中的 -z 是什么

linux - 零拷贝 UDP 打包是否可能在 Linux 上接收?

linux - Linux 中的字符串加密

linux - 文件中放置执行结果的错误符号

shell - Jenkins - java.io.IOException : Cannot run program "/usr/local/bin/bash"

bash - 为什么以下 bash 脚本在使用 nohup 调用时不起作用?