gpt4 book ai didi

linux - 在 Bash 脚本中检查执行命令的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:49 26 4
gpt4 key购买 nike

我想在登录后运行我的 VirtualBox。为此,我必须检查它是否已经在运行。如果没有,则启动 VM .

我的问题是我无法将 VirtualBox 命令的结果放入 Bash 中的变量中。

我已经创建了一个函数来获取退出参数,但我收到了一条“语法错误:无效参数‘|’”错误消息。

我怎样才能让它发挥作用?

这是我的 Bash 脚本:

########## Starting om-server VirtualBox ##############

function Run_VM {
"$@"
local status=$?
if [ $status -eq 0 ]; then
echo "Starting om-server VM!";
VBoxManage startvm "om-server"
sleep 30
ssh root@192.168.1.111
else
echo "om-server VM is running!"
fi
return $status
}


check_vm_status="VBoxManage showvminfo \"om-server\" | grep -c \"running (since\""

Run_VM $check_vm_status

########## Starting om-server VirtualBox ##############

最佳答案

为了做你想做的事,你必须使用 command substitution :

check_vm_status="$(VBoxManage showvminfo \"om-server\" | grep -c \"running (since\")"

需要注意的是,指令将在变量扩展期间(即变量分配期间)执行。

如果你只想在你的函数中执行你的指令,你可以使用eval:

function Run_VM {
eval "$@"
local status=$?
if [ $status -eq 0 ]; then
echo "Starting om-server VM!";
VBoxManage startvm "om-server"
sleep 30
ssh root@192.168.1.111
else
echo "om-server VM is running!"
fi
return $status
}


check_vm_status="VBoxManage showvminfo \"om-server\" | grep -c \"running (since\""


Run_VM $check_vm_status

注意 eval 带来了 a lot of issues .

关于linux - 在 Bash 脚本中检查执行命令的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45275059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com