我想知道如何在bash中将命令输出变为变量
这是我的代码
#!/bin/bash
opt="svcrack -v -u100 -r1-9999 -z3 10.0.0.1"
opt2="$($opt)"
echo "myout output $opt2"
输出
myout output
不在函数内部工作:(
function zwork(){
opt=$(svcrack -v -u100 -r1-9999 -z3 10.0.0.1 2>&1)
echo "myout output $opt"
}
out=$(zwork)
答案 0 :(得分:1)
请尝试将stderr重定向到stdout,如:
#!/bin/bash
opt=$(svcrack -v -u100 -r1-9999 -z3 10.0.0.1 2>&1)
echo "myout output $opt"
您可以在此处详细了解command substition。
答案 1 :(得分:0)
如果将命令存储在bash中的变量中,则需要使用 eval 关键字来执行该命令。 所以在你的情况下你应该做这样的事情......
opt="svcrack -v -u100 -r1-9999 -z3 10.0.0.1"
opt2=$(eval $opt)
echo "myout output $opt2"
更正:我在ZSH中测试了这个(不是纯粹的bash),所以我需要添加 eval ,最后假设这是丢失的位。然而有人在评论中纠正了我。这不是必要的。
OP脚本中只有问题是
opt2="$($opt)"
应该是
opt2=$($opt)