• ベストアンサー

bashのif文で構文エラー:

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

  • taku0
  • お礼率80% (160/199)

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4834/10234)
回答No.1

fi の後に、全角空白があるようです。

taku0
質問者

お礼

何度か見なおしてみていたのですが、 気が付きませんでした。 ありがとうございます!

関連するQ&A

  • ifで構文エラー?

    Red Hat Linux9がインストールしてあるPCがあり、 そこに #!/bin/sh if [ -f aaa.txt ] then   echo aaaaaaa else   echo bbbbbbb fi #end という内容のtest.txtを作り source test.txt と入力するとaaa.txtは無いので bbbbbbbと表示されはずですよね。 ですが if: 式構文?. と出てしまいます。 RedHatLinux9がインストールしてある別なPCでも 同じようにやったんですが こちらは問題なくbbbbbbbと出るんです。 何が悪いのかわからなくて困ってます。 よろしくお願いします

  • if文がうまくできません;;

    こんにちわ。 当方、linux初心者です。 今if文を作っているのですが、どうしてもうまくいきません。 ●lsで出力した結果が何行出力されたかによって回答が変わるシェルを作成してください。(10以上と9~3と2以下の3種類) という例題を解答中ですが、下記のとおり作ったのですが 何かアドバイスは頂けませんか? お願い致します。 #!/bin/bash ls -l > case.txt P=`cat case.txt | wc -l` if $P -ge 10 then echo '10以上' elif $P -ge 3 ; then echo '3以上' elif $P -le 2 ; then echo '2以下' fi

  • bashで、gotoのようなラベルによるジャンプ構文をしたいのですが、方法をご教授ください。

    bashで、gotoのようなラベルによるジャンプ構文をしたいのですが、方法をご教授ください。 今はif分毎で、エラー時にメール配信処理してますが、全て同じあて先配信なので、 簡潔に処理内容をまとめたいです。 echo "aaa" if [ $? -ne 0 ] then echo "error desu" > honbun.txt mailx -s "error" aaa@aaa.c.jp < honbun.txt exit 1 else echo "ok" fi echo "bbb" if [ $? -ne 0 ] then echo "error desu" > honbun.txt mailx -s "error" aaa@aaa.c.jp < honbun.txt exit 1 else echo "ok" exit 0

  • bashスクリプト

    bashスクリプト #!/bin/bash if [ -f *.log ]; then  echo `tar czf $(date +"%Y_%m_%d").tar.gz *.log` fi このようなスクリプトでecho ``(バックオート)でコマンドを実行できると思うんですが, tar czf $(date +"%Y_%m_%d").tar.gz *.log←これ自体を表示できないでしょうか? いまは,以下のようにしてコマンドを実行させ,さらに表示させています. これだとあまり賢くないというか,1行でスマートに表示させたいのですが, 可能でしょうか? if [ -f *.log ]; then  echo "tar czf $(date +"%Y_%m_%d").tar.gz *.log"  echo `tar czf $(date +"%Y_%m_%d").tar.gz *.log` fi

  • UNIX

    UNIXの課題をやっていて、ここまで出来たのですが???の部分が 分かりません;誰か教えて頂けると助かります; 時間があれば説明も加えて頂けたら幸いです; #!/bin/bash #ふたつの引数の大小を判断し表示するシェルスクリプト if [ $# -lt 2 ] then echo "引数が足りません" exit fi cmp1=$1 cmp2=$2 if [ $cmp1 -gt $cmp2 ] then echo "$cmp1 ??? $cmp2" elif [ $cmp1 ??? $cmp2 ] then echo "$cmp1 = $cmp2" else echo "$cmp1 ??? $cmp2" fi

  • シェルスクリプトのifでの正規表現で\wが利用不可

    なのですがどうすればいいでしょうか? 端末で x=a.out;if [[ $x =~ \.\w+$ ]];then echo ok;else echo ng;fi ng となり\wが使えません 一方 x=a.out;if [[ $x =~ \.[0-9a-z]+$ ]];then echo ok;else echo ng;fi ok です \wの代わりに[0-9a-z]+は長すぎるので何とかしたいのです 何かいい方法はないでしょうか? よろしくお願いします

  • シェルスクリプト(if文)

    bashにてシェルスクリプトを作成しています。 XXXX_111122222333_YYYYMMDD 111122222333 といった2パターンのファイル名から、「111122222333」の部分を取得したいのですが、if文の条件式で悩んでいます。 if [ expr length ${p9} -gt 13 ] then a=`echo $p9|cut -c 6-9` b=`echo $p9|cut -c 10-14` c=`echo $p9|cut -c 15-18` else a=`echo $p9|cut -c 1-4` b=`echo $p9|cut -c 5-9` c=`echo $p9|cut -c 10-13` fi これで実行すると too many arguments というエラーが出てしまいます。(結果も正しくありません) 基本的な部分が理解できていないかと思うのですが、宜しくお願いいたします。

  • シェルスクリプト(if文)

    引数で指定されたファイルがあるばあい、ファイルの末尾5行を表示し、ない場合は「ファイルパス in not found」と表示されるシェルスクリプトを作成したい。 それで偽のときのの実行結果がうまくいきません。 どこを修正すればいいでしょうか? 回答の程宜しくお願い致します。 実行結果 [root@Manabe root]# . filefile /etc/pass tail: /etc/pass: そのようなファイルやディレクトリはありません ソース #!/bin/bash if [ -f$1 ];then tail -5 $1 else echo "$1 in not found" fi

  • bash 閏年

    shellについて初めて勉強しています。 複数のコマンドライン引数で西暦を与えると,閏年かどうか判定する bashのファイルを作成しているのですが, なかなかうまくいきません。 どのように改善したらよいでしょうか? #!/bin/bash if [ ${DATE_YYYY}%4 -eq 0 -a \ ! ${DATE_YYYY}%100 -eq 0 -o \ ${DATE_YYYY}%400 -eq 0 ] then # 閏年 else # 閏年以外 fi

  • if文について

    cshで書いています。 if文がとおりません。。。 0: Event not found. このようなメッセージが出力されます。 if ($flg == "xxx") then echo "aaa" else if($flg == "yyy") then echo "bbb" exit else echo "ccc" exit endif 内容は上記のような感じです。 どなたか教えて下さい。