当前位置: 技术问答>linux和unix
expect脚本中用exec执行命令时如何忽略命令产生的错误?
来源: 互联网 发布时间:2016-11-09
本文导语: 在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 的错误,...
在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之后还是得不到正确的结果,请问一下使用什么方法可以忽略命令产生的错误提示并得到正确的结果呢?
set test [exec ls /usr/*/redhat -d]
执行时会出现ls: /usr/*/redhat -d: No such file or directory 的错误,我的理解是ls在/usr下的第一个子目录中没有找到redhat则返回这个错误,使用catch之后还是得不到正确的结果,请问一下使用什么方法可以忽略命令产生的错误提示并得到正确的结果呢?
|
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
#! /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
|
试试find 命令
find /path -type d -name redhat
find /path -type d -name redhat