シェルスクリプトの条件式でのエラーについて

このQ&Aのポイント
  • 先輩達へ。シェルスクリプトで条件式を練習していたところ、エラーメッセージが表示されました。特に問題がないはずなので、ヒントをください。
  • シェルスクリプトの条件式を練習していますが、エラーが発生しています。具体的な指示がないため、どこが問題なのか分かりません。助けてください。
  • シェルの条件式に関する問題が発生しました。エラーメッセージは「syntax error near unexpected token `else'」です。原因が分からず困っています。アドバイスをお願いします。
回答を見る
  • ベストアンサー

シェルスクリプトに関する問題です。(シェルの条件式)

先輩達、こんにちは。初めて質問をしますので、質問の仕方があまり上手ではありませんがよろしくお願いします。 今、Fadore core2を使っていますが、シェルの条件式を練習しています。 #!/bin/bash # This program is used to study if than echo "Press y to continue" read yn if [ "$yn"="y" ]; than echo "script is running..." else echo "STOP!" fi を練習しましたが、実行したら ⇒syntax error near unexpected token `else' のエラーメッセージがありました。 問題点はよくわからないですが、何の指令をしていないと思います。あまりにも簡単の問題ですが、ヒントだけでもいいですので、よろしくお願いします。

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

  • ベストアンサー
noname#9431
noname#9431
回答No.1

if [ "$yn"="y" ]; than を if [ $yn = "y" ]; then とするといいです。 man testをご参照下さい。

meruokudasai
質問者

お礼

GokigenHoiHoiさん、メールありがとうございます。 おかけ様で問題は解決しました。ちょっとした入力ミスしました。お騒がせすみませんでした。どうも有り難うございます。

関連するQ&A

  • シェルスクリプト

    while文のシェルスクリプトでエラーが出て困っています。 どうすればいいでしょうか? 回答の程宜しくお願い致します。 #!/bin/bash count=1 while[$count -le 5] do touch "y$count" ls -l "y$count" coun ='expr $count+1' done [root@Linux root]# . makefile bash: while[1 -le 5]: command not found bash: makefile: line 4: syntax error near unexpected token `do' bash: makefile: line 4: `do'

  • シェルスクリプトで配列が使えない

    シェルスクリプトを利用するときに変数を配列として扱えるという記述を見たので、 以下のようなシェルスクリプトを作成したのですが、エラーが出てきてしまいます。 端末で直接入力すると、正しく動作します。そのためなぜエラーとなるのかわかりません。 環境はubuntu 10.10、 GNU bash, バージョン 4.1.5(1)-release (i686-pc-linux-gnu) です。 ---------------------- #!/bin/sh list=(`ls`) echo ${list[0]} ---------------------- 3:Syntax error: "(" unexpected

  • FedoraCore4Linuxにおいてコマンドライン

    で以下の様にすると [root@aptiva ~]# function localtest{ local v;let u++;let v++;echo "u=$u";echo "v=$v";} bash: syntax error near unexpected token `local' [root@aptiva ~]# となるのですがどこが悪いのでしょうか?

  • シェルスクリプトの条件式の書き方

    Linuxでシェルスクリプトを書いています。 USBメモリをマウントし、 その中に Data というフォルダが存在しているかどうか確認をし、それをメッセージで表示する。 という内容です。  #!/bin/bash  sudo mount /dev/sda1 ./usb  if [ ! -d ./usb/Data/ ]; then   echo "Data 無し。" else    echo "Data 有り。"  fi と書いているのですが、 USBメモリの中に Data を用意しても、上記コードでは見つけることができないらしく、 常に"Data 無し。"と表示されてしまいます。 何故目的のフォルダを見つけることができないのでしょうか。 おそらく目的のフォルダがマウント先、つまり所有者がrootなのが問題なのだと思うのですが、 所有者がrootでも上記のようにフォルダの有無を判断するコードはあるでしょうか。

  • if文の質問です

    初心者です。 よろしくお願いします。 aaaという文字を売ったときにだけtrueを表示したいのですが、うまくいきません。 以下の<結果>のようになってしまいます。 どうしたらうまくいくのか例文を探しても載っていなかったので質問しました。 if [ $1 = "aaa" ] ; then echo true ; else echo false ; fi <結果> $ ./test.txt aaa ./test.txt: line 7: syntax error near unexpected token `fi' ./test.txt: line 7: `fi'

  • シェルスクリプト(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 というエラーが出てしまいます。(結果も正しくありません) 基本的な部分が理解できていないかと思うのですが、宜しくお願いいたします。

  • シェルスクリプトについて

    bangou.txtには ▲ 123123 123123 100000 ▲ ▲ というように数値が入っています。(▲は空白ですが改行コードがはいってます) この場合、1行目と3行目を比較するスクリプトを作りたいと思って 色々調べて以下のようなスクリプトを作ってみましたけどうまく動きません。 #!/bin/bash for iii in `sed -n '1p' bangou.txt` do jjj=`sed -n '2p' bangou.txt` kkk=`sed -n '3p' bangou.txt` #declare -i $kkk if [ "$kkk" = "$iii" ] then echo "$iii" else echo "$kkk" fi done どこか基本的なところで間違えているのかと思うのですが初心者なので よくわかりません。 わかる方がいらっしゃったら教えていただけないでしょうか。

  • ファイルから文字列を読み込むシェルスクリプトの作成

    現在シェルスクリプトの勉強をしています。 ファイルから文字列を読み込み表示するだけのシェルスクリプトを 作成しているのですが、エラーが出てうまくいきません。 ./test.sh: line 10: syntax error near unexpected token `done' 以下の通りファイルを作っています。 改行コードはLF、文字コードはSJISとなっています。 どのあたりが間違っているのか教えて頂けますでしょうか。 よろしくお願いします。 test.sh --------------------- #!/bin/sh LIST=./abc.lst while read F1 echo ${F2} break done < ${LIST} } --------------------- abc.lst --------------------- AAA BBB CCC ---------------------

  • RedHatでのシェルスクリプトについて

    こんにちは。また質問させて下さい。 redhat7.0のシェルスクリプトで、 サンプルコード片手に以下のコードを記述しました。 やりたい事は、もしaaa.txtというファイルが存在したら その内容を表示させ、存在しなければその旨のメッセージを 表示させる、という単純なものです。 この時、ファイルが存在しない時に ./test.sh: /tmp/aaa.txt: No such file or directry というエラーになってしまいます。 エラーを抜けてメッセージを表示させるには どうしたらいいでしょうか。 アドバイスよろしくお願いいたします。 *********記述したコードです。************* #!/bin/bash fileName=/tmp/aaa.txt read varStr1 varStr2 <fileName if [ -a fileName ]; then echo {$varStr1} else echo{$fileName}{$varStr2} fi

  • シェルでsyntax errorがでてしまう

    温度管理をするため、CentOS4.4上で下記のようなスクリプトを動かしています。 ---スクリプト始まり--- #!/bin/bash date=$(date '+%Y/%m/%d(%a)/%R') rh=$(/var/usbrh/usbrh -1 2>&1) limit=35 rh_judge=$(echo $rh | cut -c14-15) if (( ${rh_judge} >= ${limit} )) ;then alert=alert else unset alert fi echo ${date} ${rh} ${alert} >> /var/usbrh/usbrh_tes2.log ---スクリプト終わり--- このスクリプトで、ログを出力し、limit以上の数値になった場合、alertがログに書き込まれるようにできました。 そこでコレを少し改良してalert時にメールを飛ばせる様にしたいと思い下記のようにif文を差し替えました。 ---if文始まり--- if (( ${rh_judge} >= ${limit} )) ;then alert=alert address="xxx@hogehoge.com" subject="TemperatureAlert" mail -s $subject $address << END `$rh` END else unset alert fi ---if文終わり--- ところが、 echo ${date} ${rh} ${alert} >> /var/usbrh/usbrh_tes2.log のあとの行(line23)で line 23: syntax error: unexpected end of fileというのが出て スクリプトが動かなくなってしまいました。 ログの書き込み部分は問題ないと思うのですが、原因がわかる方いらっしゃいますでしょうか。 ご指摘頂ければ幸いです。 宜しくお願いいたします。