dポイントプレゼントキャンペーン実施中!

下記のようなファイル管理シェルをLinuxで作っているのですが、
test.sh[42]: no closing quote
というエラーがでて解決できません。
何が原因なのでしょうか。どなたかご教授ください。宜しくお願い致します。

#!/bin/ksh
#KAKUNIN_DATEから更新されているファイルをリスト
KAKUNIN_DATE="10 Jul" #これを随時更新
TODAY=`date +"%x"`
TODAY_YMD=`date +"%j"`
START_YMD=`date --date="${KAKUNIN_DATE}" +"%j"`
let n=TODAY_YMD-START_YMD
#対象ディレクトリ
CHK_DIR=$1
if [[ -d $CHK_DIR ]];then
continue
else
echo "Not Dir:$CHK_DIR"
exit
fi
#検索文字列
CHK_STR=$2
if [[ $CHK_STR = "" ]];then
echo "Pls set check-string"
exit
fi
#ファイル形式
NAME_STR=$3
if [[ $NAME_STR = "" ]];then
echo "Pls set file type(if all then \"*\")"
exit
fi
######## メイン
echo "-------------------------------------------------"
echo "調査日:$TODAY 検索文字列:$CHK_STR 調査:$CHK_DIR 形式:$NAME_STR - $KAKUNIN_DATE から今日まで($n日内)に更新されたファイル"
echo "ヒット,サイズ,更新日,ファイル名"
find $CHK_DIR -name "$NAME_STR" -type f -mtime -$n -print| while read StrLine
do
if [[ `cat $StrLine | grep $CHK_STR` = "" ]];then
echo `ls -l $StrLine | awk '{print 0","$5","$6,$7,$8","$9}'`
else
echo `ls -l $StrLine | awk '{print 1","$5","$6,$7,$8","$9}'`
fi
done

A 回答 (2件)

do-doneブロックやif-fiブロックを一つずつコメントアウトして、どこが悪いか特定するしかないと思います。

いちいち実行するのが面倒なら、「文法チェックだけする」シェルオプションを探しましょう。
あと自分の経験で言えば、#の直後に日本語を入れると挙動が怪しかったことがありました(#の後にスペースを1個以上入れてから日本語コメントを書き始めると正常に動作する)。
    • good
    • 0

>test.sh[42]: no closing quote


>というエラーがでて解決できません。
>何が原因なのでしょうか。

エラーメッセージの通りです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!