当我执行命令时,我能够得到结果。 但是我无法在shell脚本中执行命令,该脚本在从shell脚本运行时会出现错误,因为没有这样的文件或目录。
命令:
cat /usr/local/apache/logs/access_??-2014-10-{11,12}.log | tail
Shell脚本:
REPORT_DATE=`date --date=yesterday +%Y-%m-%d`
ACCESS_LOG_REPORT_DATE=`date --date="$REPORT_DATE" +%d/%b/%Y`
DATE_YEAR=`date --date="$REPORT_DATE" +%Y`
DATE_MONTH=`date --date="$REPORT_DATE" +%m`
DATE_DAY=`date --date="$REPORT_DATE" +%d`
DAYSTOSUBTRACT="-1 day"
DATE_DAY_SUBSTRACTED=`date --date="$REPORT_DATE$DAYSTOSUBTRACT" +%d`
WEB_SERVER_ACCESS_LOGS_PATH="/usr/local/apache/logs/"
WEB_SERVER_ACCESS_LOG_EXT="access_??-$DATE_YEAR-$DATE_MONTH-{$DATE_DAY_SUBSTRACTED,$DATE_DAY}.log"
WEB_SERVER_ACCESS_LOG_FILENAME=$WEB_SERVER_ACCESS_LOGS_PATH$WEB_SERVER_ACCESS_LOG_EXT
READFROM=`cat $WEB_SERVER_ACCESS_LOG_FILENAME | tail`
当我执行shell脚本时,它会抛出错误
cat: /usr/local/apache/logs/access_??-2014-10-{11,12}.log: No such file or directory
答案 0 :(得分:2)
您不能在引号内使用像*
或?
这样的glob模式字符。壳牌仅在外线报价时才会扩展。所以你可以使用:
READFROM=$(cat access_??-"$DATE_YEAR-$DATE_MONTH-{$DATE_DAY_SUBSTRACTED,$DATE_DAY}.log" | tail)
答案 1 :(得分:0)
或者您可以更新如下:
WEB_SERVER_ACCESS_LOG_FILENAME=`eval echo $WEB_SERVER_ACCESS_LOGS_PATH${WEB_SERVER_ACCESS_LOG_EXT}`