• 締切済み

Kshでエラー(no closing quote):原因わかりません

下記のようなファイル管理シェルを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

みんなの回答

  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.2

do-doneブロックやif-fiブロックを一つずつコメントアウトして、どこが悪いか特定するしかないと思います。いちいち実行するのが面倒なら、「文法チェックだけする」シェルオプションを探しましょう。 あと自分の経験で言えば、#の直後に日本語を入れると挙動が怪しかったことがありました(#の後にスペースを1個以上入れてから日本語コメントを書き始めると正常に動作する)。

  • mtfoggy
  • ベストアンサー率14% (37/255)
回答No.1

>test.sh[42]: no closing quote >というエラーがでて解決できません。 >何が原因なのでしょうか。 エラーメッセージの通りです。

関連するQ&A

  • cshの条件式について教えてください

    cshで該当ディレクトリにファイルがなければOK、あればエラーというような処理をしようと思っています。 しかし、下記のような記述ではうまくできません。 1) *************************** if ( -e $DIR/*.* ) then echo "NG" exit 1 else echo "OK" endif exit 0 *************************** if文でなく、外にだせばうまくいくのですが... 2) *************************** test -e $DIR/*.* if($status == 0) then echo "NG" exit 1 else echo "OK" endif exit 0 **************************** if ( test -e $DIR/*.* ) then... でもだめでした。 どうにかしてif文で一発判定をしたいと思っているのですが、正しい記述方法を教えてください。 よろしくお願いします。

  • Bash スクリプトでファイルの検出方法を教えてください。

    ファイルやディレクトリが無いこと(消去できたこと)を、検出したいと思います。 試しに、次のプログラムを作ってみました。 f_chk() { if [ -f "$1" ]; then echo $1 "ファイルはあった → NG" return 1 else echo $1 "ファイルは無かった → OK" return 0 fi } f_chk "/mnt/hoge/*.INF" exit ------------------------------- "if [ -f "$1" ];"でファイルの有無を判定させようとすると、明確にファイル名を指定しなければ成りません。 今、ファイル名の指定を「*.INF」とすると、正しい判定をしません。 これに変わる方法を教えてください。

  • 実行時エラー49 DLLが正しく呼び出せません。

    アクセス2010です。 今まで問題なく動いてたファイルなのですが Call マクロ1(str1, str2) Sub マクロ1(str1, str2) If ○○ Then If Form_F_Form.ck_OK.Value = 0 Then Exit Sub End If と言うところのExit Subで 実行時エラー49 DLLが正しく呼び出せません。 となります。 これはファイルが壊れているのでしょうか?

  • シェル関数引数のスペース文字列をgrepに

    下記のシェル関数 arg_space() 内で、grepを使いたいのですが。 'aaa bbb' などのスペースを含む文字列を引数として渡すとスペース後の文字列がファイル名と 認識されてしまいます。 -- arg_space.sh -- #!/bin/bash CHK_STR='aaa bbb' FILE_NAME='data/aaa.txt' function arg_space() { return `grep -c $1 $2` } arg_space $CHK_STR $FILE_NAME if [ $? -ge 1 ]; then echo 'Match !!' else echo 'No match.' fi exit 0 ------------------ ]# ./arg_space.sh grep: bbb: No such file or directory Match !! スペース文字を、grep に区切り文字として認識させないようにする 方法を教えて 頂けないでしょうか。 -- data/aaa.txt -- aaa bbb ccc ddd ---------------

  • awkでのファイル読み込み

    シェルを作成しています。 昔kshを作ってたので、ksh+awkでCSVファイル処理をしたいのですが、記憶が古く、覚えていないし、調べてもわかりませんでした。 参考になるサンプルソースや、参考になるHP等助言頂けたうれしいです。 ファイル読み込みがうまくいってないのか、getlineを使うべきなのか..。 #!/bin/ksh -x #Parameter Check if [ $# -ne 1 ];then echo "Error File Name Must Specified" exit 1 fi # Check File Exist ls $1 >/dev/null 2>&1 if [ $? -ne 0 ];then echo "Error File Not Found" exit 1 fi # Read File awk -F"," '{  フィールドセパレター変更→CSVファイルを一行ずつ読み込み→各処理をしたいです。 }' $1 宜しくお願いいたします。

  • kshでのNULLの比較

    以下のスクリプトを作成し、変数に格納された値がNULLか調べたいと思っていますが、エラーが出力されてしまいます。 ■スクリプトの中身 #!/usr/bin/ksh HOGE="" if [ ${HOGE} != "" ]; then echo "${HOGE}" fi if [ -n ${HOGE} ]; then echo "${HOGE}" fi ■エラー + HOGE= + [ != ] hoge[5]: test: 0403-004 このコマンドにはパラメーターを指定してください。 + [ -n ] hoge[8]: test: 0403-004 このコマンドにはパラメーターを指定してください。 変数の中身がnullの場合、どのような比較条件を記述すればよいのでしょうか?

  • エラー原因がよくわかりません。

     レンタルサーバー上で、以下のphpを実行したところ、行44,63にエラーが出てしまいました。考えられる原因を教えていただきたいのですが、どうぞよろしくお願いいたします。   //1件ずつ取り出すループ 44行目 while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){ echo "<tr>\n"; echo "<td><A HREF=\"event_mnt.php?post_mode=" . urlencode("検索") . "&post_date=" . _hs($rec['event_date']) . "\">修正/削除</A></td>\n"; echo "<td>" . _hs($rec['event_date']) . "</td>\n"; echo "<td>" . _hs($rec['event_name']) . "</td>\n"; $r_detail = _hs($rec['event_detail']); $r_detail = nl2br($r_detail); echo "<td>" . $r_detail . "</td>\n"; echo "<td><A HREF=\"event_chk.php" . "?post_event_date=" . _hs($rec['event_date']) . "&post_event_name=" . urlencode(_hs($rec['event_name'])) . "\">出欠状況</A></td>\n"; echo "</tr>\n"; } //結果セットの解放 63行目 mysql_free_result( $rs );

    • ベストアンサー
    • PHP
  • Makefileについて質問です。あるMakefileをのぞいてみたら

    Makefileについて質問です。あるMakefileをのぞいてみたら↓のように(一部ですが)書いてあったのですが、 どういう事をしているのかよく分かりません。 もしよろしければこの部分がどのような事をしているのか教えて頂けますでしょうか? all:; @if [ x$(ARCH) = x ]; then \ echo "Missing environmnet value ARCH"; \ exit; \ else \ for dir in $(SUBDIRS) ; do \ echo working at $$dir; \ (set +x; cd $$dir; $(MAKE) $(MFLAGS) $@ ); \ done; \ fi \は¥で置き換えてください

  • if文について

    シェルについて殆ど無知なのでお聞きしたいのですが (質問内容自体シェルの内容に含まれないのかも知れませんが)、 if ( -e $xxx_DIR/$CHK_OK1 ) then rm $xxx_DIR/$CHK_OK1 と有った場合、$xxx_DIRで指定されたディレクトリに$CHK_OK1で指定されたファイル が有れば、そのファイルを消す。と言う解釈でOKでしょうか?

  • bashのif文で構文エラー:

    bashで時間の比較によっての分岐を考えています。 ネットで検索しながらif構文を下記のようにしてみているのですが、 行 10: 構文エラー: 予期しないファイル終了 (EOF) です となってしまいます。 どなた様かお教え願えませんでしょうか #!/bin/bash DATA=`date +%-H%M` if [ $DATA -gt 600 ];then echo "$DATA" else echo "NG" fi