expect脚本中用exec执行命令时如何忽略命令产生的错误?

时间:2021-07-17 08:45:00
在linux中使用命令“ls /usr/*/redhat -d”,将会得到/usr/src/redhat的结果,但是如果在expect脚本中使用如下语句则会报错:
set test [exec ls /usr/*/redhat -d]

执行时会出现ls: /usr/*/redhat -d: No such file or directory 的错误,我的理解是ls在/usr下的第一个子目录中没有找到redhat则返回这个错误,使用catch之后还是得不到正确的结果,请问一下使用什么方法可以忽略命令产生的错误提示并得到正确的结果呢?

6 个解决方案

#1


为什么不直接指定ls /usr/src/redhat -d

#2


我的这个语句只是一个举例,在实际应用中我是要在不确定的目录中找到某个子目录,用这样的命令可以非常方便的找到。

#3


试试find 命令
find /path -type d -name redhat

#4


"执行时会出现ls: /usr/*/redhat -d: No such file or directory 的错误"
我觉得貌似*没有被expect解析,直接把它作为一个目录名称了

#5


expect不支持使用*通配符代表任意目录,请使用bash或者sh解释该命令,例如

#! /usr/bin/env expect

set a [exec bash -c "ls -d /export/home/ilink/sas/bin/*/expect"]
#set a [exec ls -d /export/home/ilink/sas/bin/macro_server/expect]
puts $a

#6


3楼兄弟提出了另一个思路,该方法可行;5楼的兄弟解决了原脚本出错的问题,非常感谢。

#1


为什么不直接指定ls /usr/src/redhat -d

#2


我的这个语句只是一个举例,在实际应用中我是要在不确定的目录中找到某个子目录,用这样的命令可以非常方便的找到。

#3


试试find 命令
find /path -type d -name redhat

#4


"执行时会出现ls: /usr/*/redhat -d: No such file or directory 的错误"
我觉得貌似*没有被expect解析,直接把它作为一个目录名称了

#5


expect不支持使用*通配符代表任意目录,请使用bash或者sh解释该命令,例如

#! /usr/bin/env expect

set a [exec bash -c "ls -d /export/home/ilink/sas/bin/*/expect"]
#set a [exec ls -d /export/home/ilink/sas/bin/macro_server/expect]
puts $a

#6


3楼兄弟提出了另一个思路,该方法可行;5楼的兄弟解决了原脚本出错的问题,非常感谢。