2016-11-04 17 views
-2

linuxのシェルスクリプトを書く初心者。そのcshスクリプトですが、bashシェルでそれを実行しているのは、#!/bin/cshの代わりに#!/bin/bashを使用した理由です。シェルスクリプトのループがLinuxのbashシェルで動作しないwhile

1 #!/bin/bash 
    2 set i = 1 
    3 echo it starts 
    4 
    5 while ($i <= 5) 
    6   echo i is $i 
    7   @ i= $i +1 
    8 end 

**注:**数字は行の番号にすぎません。

it starts 
./me.csh: line 9: syntax error: unexpected end of file 

私はそれがit startsをエコー表示し、エラーで指定された行番号9が存在しないにもかかわらず、間違っているかを把握することはできません。

上記のコードは私にエラーが発生して出力を提供します。

+2

が、あなたのスクリプトは' csh'です:

$ cat me.csh #!/bin/csh set i = 1 echo it starts while ($i <= 5) echo i is $i @ i = $i + 1 end 

出力:また、あなたはアットマーク-MENTあなたのスペースを欠落していました。 'bash'と' csh'は2つの異なる言語です。あなたはどの言語をスクリプトに書いていますか? –

+0

私は 'csh'で書くつもりですが、' bash'シェルから実行しようとしています –

+0

正直言って、私はあなたがbashとスタックすることをお勧めします... – paulsm4

答えて

2

シェバングが解釈すべきであるシェルに設定する必要があります。スクリプト。スクリプトを実行するシェルは重要ではありません。重要な唯一のものは、スクリプトが書かれている言語です。

スクリプトはcshで記述されているため、shebang #!/bin/cshが必要です。これはbashから実行したい場合でも当てはまります。あなたの質問のタグ、タイトルとシェバングは `bash`を言う

$ ./me.csh 
it starts 
i is 1 
i is 2 
i is 3 
i is 4 
i is 5 
+0

ありがとうございますが、このエラーが発生しています: 'bash:./me.csh:/ bin/csh:悪いインタプリタ:そのようなファイルやディレクトリはありません。そして私はKali Linuxを使っていて、 'csh'を持っていないのか分かりません。 –

+0

cshがない場合は、cshをインストールするか、サポートする言語にスクリプトを書き直す必要があります。 –

+0

私は 'csh'をインストールして、今は'#!/ bin/csh'を使って作業しています。あなたのアイデアをありがとう。 –

0

はこれを試してみてください:

#!/bin/bash 
echo it starts 

i=1 
while [ $i -le 5 ]; do 
    echo i is $i 
    i=$((i+1)) 
done 

出力例:

it starts 
i is 1 
i is 2 
i is 3 
i is 4 
i is 5 

ここでは、偉大なリファレンスです:

BASH Programming - Introduction HOW-TO

+0

申し訳ありませんが、おそらく私はより具体的ではありませんでした。私は私の質問を編集しました。 –

関連する問題