人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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にて編集しました。

●質問者: masudai
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:bash cygwin dat echo LE
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ココサブ
●40ポイント

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


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

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

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


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

◎質問者からの返答

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

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


2 ● dev_zer0
●30ポイント

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

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

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


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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ