重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

趣味で自宅にubuntuを入れて、Linuxの本を片手にもって勉強している学生です
それでshellスクリプトでテストの結果を入力したら自動的にA.B.Cと認識するプログラムを作ったんですけど
$ ./test
./test: line 4: echoPlease input your record: command not found
12
./test: line 7: case12in: command not found
./test: line 8: syntax error near unexpected token `)'
./test: line 8: `100 | 99 | 98 | 97 | 96 | 95 | 94 | 93 | 92 | 91| 90 ) echo"A";;'
なぜコマンドが見つからないのかわかりません
ちなみにプログラムは
#!/bin/sh

echo"Please input your record"
read record

case"$record"in
100|99|98|97|96|95|94|93|92|91|90) echo"A";;
89|88|87|86|85|84|83|82|81|80) echo"B";;
79|78|77|76|75|74|73|72|71|70) echo"C";;
69|68|67|66|65|64|63|62|61|60) echo"D";;
59|58|57|56|55|54|53|52|51|50) echo"E";;
49|48|47|46|45|44|43|42|41|40) echo"F";;
39|38|37|36|35|34|33|32|31|30) echo"G";;
29|28|27|26|25|24|23|22|21|20) echo"H";;
19|18|17|16|15|14|13|12|11|10) echo"I";;
9|8|7|6|5|4|3|2|1|0) echo"J";;
*)echo"sorry,answer not recognized";;
esac
exit
もしどこか間違っていたら教えてください

A 回答 (5件)

行末に CR(\r)がついているだけでは?



いったいどんなエディタでこのシェルスクリプトを作ったんですか?
    • good
    • 0
この回答へのお礼

ありがとうございました

Linuxでやったら、すぐにできました

皆さんありがとうございます

お礼日時:2007/10/10 17:27

いや, だから, コード全体を「一字一句そのまま」の形で出してよ.

    • good
    • 0

\r は空白ではなくてCR、日本語だと復帰、カーソル位置を行頭に戻す制御記号です。



cygwinはWindows環境の中にunix租界をつくるものですが、改行がWindowsだと\r\nで、unixだと\nなので、そのあたりの設定のまずさのために、変数recordの末尾に\rが付いてしまってるんだと思います。

そのあたりのことをきちんとわかってないと、cygwinを使うのは難しいです。何か設定があったはずですが、cygwinは棄てたので忘れちゃいました。

Linuxの勉強をするのが目的なら、cygwinは適してません。unixをよく知った人がWindowsでunixライクなことをしたいときに使うツールです。
    • good
    • 0
この回答へのお礼

丁寧に教えてくださってありがとうございます
だけど先輩に頼んでLinux(fedora)でも試してもらったんですけど
not a valid identifiered:'record
line 4 syntax error near unexpected token '$'in\r"
line 4 'case "$record" in
caseの部分でどうしても引っかかってしまいます
一応/bin/sh --versionも調べて見ました
もしかして拡張子を.shにしないとダメですか?
スクリプトを呼び出す方法って
/bin/sh ファイルネーム 又は
chmod +x ファイルネーム
./ファイルネーム
であってますか?

お礼日時:2007/10/09 23:02

多分, 「記号を確認した」とか「本と同じ記号を使っている」と書くよりも, 全体をコピペした方がいいと思う.


しかし, \r が何で入ってるんだろ!?

この回答への補足

¥rの意味がわかりました
空白です
だけど not a valid identifiered:'record
line 4 syntax error near unexpected token '$'in\r"
line 4 'case "$record" in
ほかのcaseを使ったサンプルプログラムも試したんですけど、case....で引っかかります。
もう2日ぐらいやってるんですけど全然できません
なにかほかの方法がないでしょうか?
もしかしたらボーンシェル(/bin/sh)が入ってないと思い確認したら、/bin/shはありました


改善します>>ubuntuじゃなくcygwinでした。すいません

補足日時:2007/10/09 17:18
    • good
    • 0

エラーメッセージが出るんですから間違っているに決まっています。



echo△"Please input your record"
case△"$record"△in

△のところに空白(半角スペースかタブ)が必要です。

この回答への補足

line 4 syntax error near unexpected token '$'in"\r"
通訳すると>>第4行構文エラー 近くに予想外の記号があります
それで記号を確認したんですけど、やっぱりだめでした
本と同じ記号を使ってるんですが、できません

補足日時:2007/10/08 18:22
    • good
    • 0

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