Linux 星号在脚本中不起作用

Linux 星号在脚本中不起作用,linux,shell,unix,Linux,Shell,Unix,当我在脚本中写这一行时,它不起作用,在那里找不到任何这样的文件。但通过命令行,它正在工作。它发生在每个命令中,*没有给出文件名 zgrep $line2 *.gz >> CSP_Final_${DATE_TIME}.DAT 错误是: file_loop line2 + line2=line2 + zgrep line2 '*.gz' + 1>> CSP_Final_20120926_221841.DAT gzip: *.gz: No such file or di

当我在脚本中写这一行时,它不起作用,在那里找不到任何这样的文件。但通过命令行,它正在工作。它发生在每个命令中,
*
没有给出文件名

zgrep  $line2 *.gz  >> CSP_Final_${DATE_TIME}.DAT
错误是:

 file_loop line2
+ line2=line2
+ zgrep line2 '*.gz'
+ 1>> CSP_Final_20120926_221841.DAT
gzip: *.gz: No such file or directory
代码:

while read line
    do

if [[ ${profile_count} -gt 700 ]]
                           then
                                DATE_TIME=`date +'%Y%m%d_%H%M%S'`
                                export profile_count=1
                                sleep 1
                           fi
        profile_count=`expr ${profile_count} + 1`
 count=`expr ${count} + 1`
echo " ${count} \t"
echo "${profile_count} \t"
echo $line1
#export line2=`echo ${line}`

file_loop line2
done<abhi


file_loop()
{
line2=$1
#while read line1
#do
#echo $line1
echo $PWD
zgrep  $line2 *.gz  >> CSP_Final_${DATE_TIME}.DAT
#done<abhi2
}
读取行时
做
如果[${profile_count}-gt 700]]
然后
DATE_TIME=`DATE+'%Y%m%d_%H%m%S'`
导出配置文件\u计数=1
睡眠1
fi
profile_count=`expr${profile_count}+1`
count=`expr${count}+1`
回显“${count}\t”
回显“${profile\u count}\t”
echo$line1
#导出行2=`echo${line}`
文件循环行2
完成>CSP_Final_${DATE_TIME}.DAT

#完成尝试在
zgrep
行之前添加以下内容:

echo "zgrep $line2 *.gz"
你的产出是多少

另外,尝试使用等效的
find
命令替换通配符表达式,并查看行为是否发生了变化:

zgrep $line2 $(find . -maxdepth 1 -iname '*.gz')
对于这个脚本,你的shebang行是什么样子的?在命令行上尝试该命令时,您使用的是哪个shell

更新:
我看到您正在使用
#/bin/ksh-xvf
作为shebang行。如果我没记错的话,
-f
选项会禁用文件名globbing。这可以解释你所看到的行为。因为您的交互式shell没有设置此选项,所以代码在那里工作。尝试删除
-f
选项,查看行为是否发生变化。

发生了其他情况。显示实际代码。脚本不能在存储
*.gz
文件/abppkg7glb1/u2u/aimsys/abpwrk38/CSP+echo'zgrep line2.gz'zgrep line2*.gz+zgrep line2.gz'+1>>CSP_Final_20120927_120220.DAT gzip:.gz:没有这样的文件或目录谢邦:#/bin/ksh-xvf Shell:echo$Shell-e/usr/bin/kshON命令行它工作正常,使用*.gz它能够将所有文件提供给zgrep命令。您提供的命令类似于:zgrep line2.gz zgrep$line2$(find.-maxdepth 1-iname.gz')+find-maxdepth 1-iname'*.gz'+zgrep line2./MY201208065072.gz./MY201208045009.gz./MY201207284792.gz./MY201208024937。gz@Kimi-我认为问题可能出在您的shebang线路上(详细信息请参见我上面的更新)。