当我在我的脚本中写这行时,它不起作用,它无法在那里找到任何这样的文件。但是通过命令行它正在工作。每个命令都会发生这种情况,*
没有给出文件名。
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
}
答案 0 :(得分:2)
尝试在zgrep
行之前添加以下内容:
echo "zgrep $line2 *.gz"
你得到什么输出?
此外,尝试使用等效的find
命令替换通配符表达式,并查看行为是否更改:
zgrep $line2 $(find . -maxdepth 1 -iname '*.gz')
这个剧本你的shebang线是什么样的?在命令行上尝试命令时使用了什么shell?
<强>更新强>
我看到你使用#!/bin/ksh -xvf
作为shebang线。如果我没记错,-f
选项会禁用文件名通配。这可以解释您所看到的行为。由于交互式shell没有设置此选项,因此代码在那里工作。尝试删除-f
选项,看看行为是否发生了变化。