繁体   English   中英

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

[英]Checking result of executed command in a Bash script

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

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

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

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

这是我的 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 ##############

为了做你想做的事,你必须使用命令替换

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

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

如果你只想在你的 function 期间执行你的指令,你可以使用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带来了很多问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM