僕の塾では、必須科目としてLinuxオペレーションも教えます。オペレーションとは言っても、ディレクトリを行ったり来たり、ファイルを覗いたり、検索したりすることは使ってれば誰だって出来るようになるので、少し触ったら割とすぐにshellを教えます。

CSVファイルの最初のカラムにカテゴリがあるとして、そのカテゴリ毎に別ファイルに切り分ける、みたいなことをやったりするわけですが、ここに大きな問題があります。

自分がそんなにshell得意じゃないんです。

あの分かりにくさはハンパないと思うのは、私だけでしょうか。

変数の扱いも妙です。

count=5

代入はこれでよい。これを参照するときには

$count

として参照する。

それなら代入も

$count=5

でいいではないか。

それにこの代入に使われる「=」である。

代入するには

count=5

でなければならず、

count = 5

ではだめです。

countがなにかのコマンドだと解釈されてしまう。

しかし、比較演算子として使うときは

if [ ${count}=${ret} ]; then

ではダメで、

if [ ${count} = ${ret} ]; then

でなくてはならない。

代入では両端にスペースを入れてはならず、比較では両端にスペースが必要です。でないと、たぶん代入だと思われてしまう。多分ですけど。

if[

ではだめで

if [

でなければならず

if [${count}

ではだめで、

if [ ${count}

でなければいけない。

使いたいなって気分になります?

おそらく同じようなことはperlでも出来るでしょう。

awkでもできるかな。

そちらを覚えた方がましなんじゃないか、なんて教えながら思っちゃうんですよね。。

世の中にはshell好きな方も多いので、好みの問題と言ってしまえばそれまでですが。

僕にとってshellスクリプトほど不思議なものはありません。

理屈は分かるんですけどね。おそらく「=」もスペースで区切られることで「比較のコマンド」として機能するのでしょう。

各企業が新人にどのような技術習得を望むか、の動向で自分らの授業の組み立ては変わります。

おそらくスクールによって力点の置き場所は変わるのでしょう。

自分はあくまでプログラマなので、プログラマを育てるところに重点がかかります。ただプログラマが「Linuxって何?」ではシャレにならないので必須項目に入っているのですが、その内容についてはまだまだ手探りです。

ただ、shellスクリプトにしろなんにしろ、結局書き方の問題であって、考え方は同じだ、ということを知ってもらえることにはなります。それは確かです。

その意味ではshellもりっぱなプログラミング言語です。

やっぱり最後は好き嫌いの問題かなぁ。。

ま、自分の勉強がまだまだ足りないということです。はい。