捕获变量中的命令输出并将其抑制

时间:2015-10-27 11:22:00

标签: 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中。

1 个答案:

答案 0 :(得分:2)

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

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