
趣味で自宅に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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
\r は空白ではなくてCR、日本語だと復帰、カーソル位置を行頭に戻す制御記号です。
cygwinはWindows環境の中にunix租界をつくるものですが、改行がWindowsだと\r\nで、unixだと\nなので、そのあたりの設定のまずさのために、変数recordの末尾に\rが付いてしまってるんだと思います。
そのあたりのことをきちんとわかってないと、cygwinを使うのは難しいです。何か設定があったはずですが、cygwinは棄てたので忘れちゃいました。
Linuxの勉強をするのが目的なら、cygwinは適してません。unixをよく知った人がWindowsでunixライクなことをしたいときに使うツールです。
丁寧に教えてくださってありがとうございます
だけど先輩に頼んで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 ファイルネーム
./ファイルネーム
であってますか?
No.2
- 回答日時:
多分, 「記号を確認した」とか「本と同じ記号を使っている」と書くよりも, 全体をコピペした方がいいと思う.
しかし, \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でした。すいません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batである文字列内に特定の文字...
-
Cシェルプログラムで、あるディ...
-
cshの条件式について教えてくだ...
-
rubyで、バッククォートの中に...
-
シェルスクリプトの変数の制限?
-
シェルスクリプトのパス
-
ファイル名についている「-」と...
-
TOPコマンドで表示するCPU使用...
-
bashでシングルクォート内の変...
-
スクリプトのエラー「unexpecte...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
IPアドレスだとPingが通るのに...
-
英語版での表示
-
topコマンドで表示されるVIRT、...
-
[バッチファイル]レジストリ値...
-
no valid signature found
-
SPI非言語の問題 解説お願いします
-
シェルスクリプトでエラーが出ます
-
ラズパイで『’test.service’をs...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batである文字列内に特定の文字...
-
シェルスクリプトの変数の制限?
-
スクリプト中のexportコマンド...
-
Bシェル 文字列に含まれる特...
-
ファイルから文字列を読み込む...
-
【sh】tee コマンドの代替方法
-
if文について
-
bashスクリプト
-
cshの条件式について教えてくだ...
-
kshでのNULLの比較
-
【シェルスクリプト】whileルー...
-
シェルスクリプトでうるう年判定
-
Cシェルプログラムで、あるディ...
-
UWSCについて
-
sh スクリプト ipアドレス形式...
-
Cシェルで、文字列中(str)に、...
-
Cシェルで標準エラー出力への...
-
Shellスクリプトについて
-
shellスクリプトから別のshell...
-
rubyで、バッククォートの中に...
おすすめ情報