我正在编写一个脚本,它将为给定的流程实例选择最后创建的文件。
我在脚本中使用的命令是
CONSOLE_FILE=`ls -1 "$ABP_AJTUH_ROOT/console/*${INSTANCE}*" | tail -1`
但是当脚本执行时,上面的命令变为
ls -1 '....../console/*ABP*'
由于单引号,*
未被视为通配符,并且输出如下:
ls -1 $ABP_AJTUH_ROOT/console/*${INSTANCE}* | tail -1
+ ls -1 '/tcusers1/dev/aimsys/devtc1/var/dev/projs/ajtuh/console/*UHMF_RT_1085*'
+ tail -1
ls: /tcusers1/dev/aimsys/devtc1/var/dev/projs/ajtuh/console/*UHMF_RT_1085*: No such file or directory
+ CONSOLE_FILE=''
在删除'后,它正在命令行上工作来自命令,但在上面提到的脚本中使用时无法正常工作
tc1@gircap01!DEV:devtc1/Users/RB/AIMOS_CLEANUP_CANSUB> ls -l '/tcusers1/dev/aimsys/devtc1/var/dev/projs/ajtuh/console/*UHMF_RT_1085*'
ls: /tcusers1/dev/aimsys/devtc1/var/dev/projs/ajtuh/console/*UHMF_RT_1085*: No such file or directory
devtc1@gircap01!DEV:devtc1/Users/RB/AIMOS_CLEANUP_CANSUB> ls -l /tcusers1/dev/aimsys/devtc1/var/dev/projs/ajtuh/console/*UHMF_RT_1085*
-rw-r--r-- 1 devtc1 aimsys 72622 Feb 17 20:55 /tcusers1/dev/aimsys/devtc1/var/dev/projs/ajtuh/console/ADJ1UHMINFUL_UHMF_RT_1085_console_20150217_205519.log
-rw-r--r-- 1 devtc1 aimsys 177039 Feb 17 21:02 /tcusers1/dev/aimsys/devtc1/var/dev/projs/ajtuh/console/ADJ1UHMINFUL_UHMF_RT_1085_console_20150217_210203.log
答案 0 :(得分:1)
您不能在通配符周围使用双引号,因为这会将星号转换为文字字符。
CONSOLE_FILE=`ls -1 "$ABP_AJTUH_ROOT"/console/*"$INSTANCE"* | tail -1`
应该有效,但请注意针对http://mywiki.wooledge.org/ParsingLs和一般http://mywiki.wooledge.org/BashPitfalls
的警告答案 1 :(得分:0)
尝试
CONSOLE_FILE=`eval ls -1 "$ABP_AJTUH_ROOT/console/*${INSTANCE}*" | tail -1`
此外,如果您想要上次创建的文件,请使用ls -1tr