- ベストアンサー
【Linux】シェルスクリプトについて
Linuxの学習をしています。 シェルスクリプトを使って、1~50までの整数の和を求めるという問題があるのですが解けません…。 とても簡単な問題だとは思いますが、どなたか教えて頂けますでしょうか? 因みに、for文またはwhile文を使うようにという指示があり、標準シェルを用いてます。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
標準シェルでと言うことだと、 s=0 for i in `seq 1 50` do s=`expr $s + $i` done echo $s Linuxカテゴリだから、これでいいと思いますが、Unixだと種類によってはseqコマンドがありません。「Linuxだと絶対にseqはある」とは言えませんがまず間違いなくあります。 さらにLinuxで標準になっているシェルというとbashなので、bashを前提にするとC言語風に、こうも書けます。 s=0 for((i=1; i<=50; i++)) do let s+=i done echo $s
その他の回答 (2)
- gfe01045
- ベストアンサー率61% (19/31)
i=1 while [ $i -lt 51 ] do ans=`expr $ans + $i` i=`expr $i + 1` done echo $ans では!!
- kmee
- ベストアンサー率55% (1857/3366)
「標準シェル」ってなんでしょう?具体的なコマンド名を。 他のプログラミング言語では書けますか? 基本的なアルゴリズムは同じです。 他の言語と違う点は ・変数を参照するときと代入するときとでは、表記が違う、ということ。変数aに変数bを代入するのは$a=$bでもa=bでもない ・変数の数値演算には特別な方法が必要。 単にa+bとしてもaの数値とbの数値の加算をしてくれない。 ・whileの条件も単純な数値比較ではない、ということ。 ・forはリスト状のものを順番に処理するものなので、例えばBasicのFor文のような使い方をするには工夫がいる、ということ 屁理屈言えば perl -e '$j=0;for($i=1;$i<=50;$i++){$j+=$i;}print $j' と一行書いただけのものも「シェルスクリプト」にはなるんですが。
補足
回答ありがとうございます。 すみません、Bシェルのことです。 Cシェルでは無いということを伝えたかったのです…。 また、プログラミング経験は全くないので、他の言語でも書けません。アルゴリズムはなんとなくの理解はできます。 そのように一行でも記述できるのですね。 ただ今回は、 for 変数 do コマンドリスト done での記述を求められていました。 長くなりすみません。
お礼
seqコマンド使用でき、上記のもので無事に実行することができました。 ご回答ありがとうございました!