将变量设置为终端命令的结果(Bash)

时间:2015-04-16 01:28:09

标签: bash openssl mac-address

所以我正在尝试制作一个bash文件,每10分钟旋转一次MAC地址,每次都会分配一个随机的十六进制数字。我想将一个名为random_hexa的变量分配给此命令的结果:openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'。然后我会接受变量并稍后在脚本中使用它。

任何想法如何获取openssl命令的结果并将其分配给变量供以后使用?

谢谢!

3 个答案:

答案 0 :(得分:2)

如下所示存储变量:

myVar=$(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//')  

现在$myVar可用于指代您的号码:

echo $myVar

$()subshell中的括号内运行命令,然后将其存储在变量myVar中。这称为 command substitution

答案 1 :(得分:1)

你想要"命令替换"。传统的语法是

my_new_mac=`openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'`

Bash也支持这种语法:

my_new_mac=$(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//')

答案 2 :(得分:0)

您可以使用$()语法存储任何命令的结果,例如

random_hexa=$(openssl...)