Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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
Linux 命令在shell脚本中不起作用,它作为命令起作用_Linux_Bash_Shell - Fatal编程技术网

Linux 命令在shell脚本中不起作用,它作为命令起作用

Linux 命令在shell脚本中不起作用,它作为命令起作用,linux,bash,shell,Linux,Bash,Shell,当我执行命令时,我可以得到结果。 但我无法在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

当我执行命令时,我可以得到结果。 但我无法在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

不能在引号内使用全局模式字符,如
*
。Shell仅在它们位于quote之外时才会展开。因此,您可以使用:

READFROM=$(cat access_??-"$DATE_YEAR-$DATE_MONTH-{$DATE_DAY_SUBSTRACTED,$DATE_DAY}.log" | tail)

或者,您可以按如下方式更新:

WEB_SERVER_ACCESS_LOG_FILENAME=`eval echo $WEB_SERVER_ACCESS_LOGS_PATH${WEB_SERVER_ACCESS_LOG_EXT}`

尝试在不使用“,除非,否则无法以其他方式完成工作,或者如果您真的信任输入。请注意,
catab | tail
tail ab
不同,我在shell脚本中的其他命令中使用了glob模式,它们工作正常。我只面临这个问题。无论你在哪里使用它们,只要确保没有引用
*
等。你试过我建议的吗?是的,阿努巴瓦。我已经尝试过了,但是我得到了相同的结果。
/usr/local/apache/logs/
目录中的确切日志文件名是什么?