Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在LinuxExpect的exec命令中执行多个命令_Linux_Bash_Shell_Networking_Expect - Fatal编程技术网

如何在LinuxExpect的exec命令中执行多个命令

如何在LinuxExpect的exec命令中执行多个命令,linux,bash,shell,networking,expect,Linux,Bash,Shell,Networking,Expect,我正在尝试使用Linux的expect来检测主机是否可用 现在,我可以通过bash使用以下命令来获取返回值并检查主机状态 #!/usr/bin/bash nc -z $DUT_IP 22 && echo $? 我想通过expect做同样的事情。但我似乎失败了 #!/usr/bin/expect -- set DUT_IP "192.168.1.9" set result [exec nc -z $DUT_IP 22] send_user "$result\n\n" 我

我正在尝试使用Linux的expect来检测主机是否可用

现在,我可以通过bash使用以下命令来获取返回值并检查主机状态

#!/usr/bin/bash
nc -z $DUT_IP 22 && echo $?
我想通过expect做同样的事情。但我似乎失败了

#!/usr/bin/expect --   
set DUT_IP "192.168.1.9"
set result [exec nc -z $DUT_IP 22] 
send_user "$result\n\n"
我收到以下错误消息:

    invalid port &&
        while executing
    "exec nc -z $DUT_IP 22 && echo $?"
        invoked from within
    "set result [exec nc -z $DUT_IP 22 && echo $?] "
        (file "reboot.exp" line 44)

使用
&&
分隔命令是一个shell构造,而不是expect构造。可以为该命令列表显式启动shell:

set result [exec sh -c "nc -z $DUT_IP 22 && echo $?"]

请注意,仅当命令成功时才会打印退出状态,因此结果将为“0”或空。您想使用
而不是
&&

非常感谢您的友好回复。这对我很有用。