cygwinにて繰り返し構文を含んだシェルスクリプトを実行すると、エラーが出ます。

たとえば

#! /usr/bin/bash
i=0
while test $i -le 9
do
let j=i+1
echo $j > $i.dat
let i=i+1
done

を実行すると、
line9: syntax error: unexpected end of file
と出てしまいます。
基本的な構文をチェックしようと、以下を試しました。

#! /usr/bin/bash
for i in 1 2 3 4
do
echo $i
done

すると、今度は以下のエラーメッセージがでました。
line 3: syntax error near unexpected token '$'do¥r''`do
エラーの原因が分かりません。教えていただけませんでしょうか?
ちなみに私はcygwinもlinuxも初心者です。
上記シェルスクリプトはMeadowにて編集しました。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/05/01 23:29:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:YasuyukiMiura No.1

回答回数33ベストアンサー獲得回数7

ポイント40pt

改行コードの問題だと思います。


Windowsでは、改行コードがCRLF(\r\n)となっていて、

Linux, cygwinではLF(\n)のみです。

そのため、\rを改行ではなく、文字として認識するためエラーが発生しているのではないでしょうか。


Cygwin memoなどが参考になると思います。

id:masudai

dos2unixを試したところ、流れました。

ありがとうございました。

2007/05/01 23:28:12
id:dev_zer0 No.2

回答回数332ベストアンサー獲得回数25

ポイント30pt

> line 3: syntax error near unexpected token '$'do¥r''`do

多分、改行コードがCR+LFの為です。

私のCygwin環境で改行コードをCR+LFにして実行すると同様の現象が再現できました。


作成したシェルスクリプトの改行コードをCR+LFではなくLFのみにししてください

id:masudai

改行コードをLFのみに変換したら流れました。

ありがとうございました。

2007/05/01 23:28:15

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • syntax error near unexpected token 改行コードをLFのみにhttp://q.hatena.ne.jp/1178011903http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15968&forum=10http://www.vector.co.jp/soft/winnt/util/se406512.html
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません