我想在 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/