我想在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中。
答案 0 :(得分:2)
您可以将输出存储在如下变量中:
OUTPUT=$(echo "User-Name=root,User-Password=root123" | radclient $ip auth $key)
echo "$OUTPUT"