1

スクリプト内にこの行を書き込むと、機能しません。そのようなファイルを見つけることができません。しかし、コマンドラインからは機能しています。これはすべてのコマンドで発生し*、ファイル名を指定していません。

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
}
4

1 に答える 1

2

zgrep行の直前に次を追加してみてください。

echo "zgrep $line2 *.gz"

出力のために何を取得しますか?

また、ワイルドカード式を同等のfindコマンドに置き換えて、動作が変わるかどうかを確認してください。

zgrep $line2 $(find . -maxdepth 1 -iname '*.gz')

このスクリプトのシバンラインはどのように見えますか?コマンドラインでコマンドを試すときに使用しているシェルは何ですか?

更新: あなたは#!/bin/ksh -xvfシバンラインとして使用しているようです。私が正しく覚えている場合、この-fオプションはファイル名のグロブを無効にします。これはあなたが見ている振る舞いを説明するでしょう。インタラクティブシェルにはこのオプションが設定されていないため、コードはそこで機能します。オプションを削除して-f、動作が変わるかどうかを確認してください。

于 2012-09-26T20:06:45.013 に答える