僕の塾では、必須科目として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もりっぱなプログラミング言語です。
やっぱり最後は好き嫌いの問題かなぁ。。
ま、自分の勉強がまだまだ足りないということです。はい。