こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

シェルスクリプトのBシェル(Bourne)に出てくる、$0,$1,$2

シェルスクリプトのBシェル(Bourne)に出てくる、$0,$1,$2...のような位置パラメタや、$?,$$,$!,$-のような特殊変数がありますが、これはPerlやRubyもあるようですが、意味や効果、やり方等は同じでしょうか。

当方はPHP,JavaScriptしか触れていませんし、PHPやJavaScriptは、そのような位置パラメタや特殊変数は見当たりませんでした…。

つまり、PerlやRubyはUNIXのコマンドから誕生したスクリプト言語ということでしょうか。

こういった位置パラメタや特殊変数はPerlやRuby以外に他の言語にもありますでしょうか。PythonとかCとかJavaとか…。

また、Bシェルを学んでいる途中ですが、シェルスクリプトの中にはbourne以外にもbashやC Shell,zsh,Perlがありますが、何故Perlが入っているのでしょうか。
Perlをやっている方は別途シェルスクリプトをやる必要はないということでしょうか。

投稿日時 - 2010-02-28 23:09:14

QNo.5714380

暇なときに回答ください

質問者が選んだベストアンサー

>意味や効果、やり方等は同じでしょうか

意味は、それぞれの言語やスクリプトで違います。

>PHPやJavaScriptは、そのような位置パラメタ


だとしたら、まだ初心者でしょう。存在します。

>PerlやRubyはUNIXのコマンドから誕生したスクリプト言語ということでしょうか

違います。UNIX OSが歴史が深いし、どちらかと言うとコマンドで実行形式が普通だったから普及し、受け入れられる柔軟性が(使っている側とOS側も)あったため、使用する人が増えただけです。

>こういった位置パラメタや特殊変数はPerlやRuby以

あたりまえです。存在します。今はオブジェクト指向が当たり前の世界なので、フレームワークとか外部の物を取り入れたりすると必ず必要になりまよね。

>bourne以外にもbashやC Shell,zsh,Perlがありますが、何故Perlが入っているのでしょうか。

”入っている” と言う意味がよく分かりませんが、たぶんOSに梱包されていて設置すると使えると言う意味でしょう。

まず”シェルスクリプト”のシェルの意味を正しく理解しましょう。下記のURLに妥当な説明があります。その説明を理解しましょう。

http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB

ここの引用で
----------------
「コマンドインタプリタ」の名称で呼ばれる場合は単に「コマンドを解釈する者」の意であり、OSのユーザインタフェースとしての意味合いは失われていることが多い。
----------------

となっているとおり、シェルがたくさんあるのはUNIX系OSの歴史でもあります。つまり互換性ですね。バージョンが上がったり、派生型のOSだと、過去の資産を使えない事がかなり痛手です。それで、バージョンを重ねるたびに、そのまま過去のシェルも残り、UNIX(Linuxも含む)の歴史を追従して、オープン化や共有化されています。

それぞれのシェルの中で当然、コマンドが使用できます。その中にPerlも在るだけです。シェルは、コマンドインプリンタとしての役目を果たしているだけです。内部コマンドと、外部コマンドがあるので、外部コマンドの一つがPerlと言うだけです。他のコマンドも同じです。

と言うことで、

>Perlをやっている方は別途シェルスクリプトをやる必要はないということでしょうか。

は、間違いである事が分かりますね。

No1の方もいっていますが、上記の理由でPerlはシェルではありませんね。だからShell Scriptとはならないわけです。単なる「コマンドインタプリタ」であって、OSのユーザーインターフェースではありませんね(シェルではない)。

投稿日時 - 2010-03-01 01:14:40

お礼

ご回答ありがとうございます。
参考になりました。

投稿日時 - 2010-03-01 20:45:33

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

> 意味や効果、やり方等は同じでしょうか

たまたま同じな場合があるかもしれませんが、常に同じである保証はどこにもないですね。

> 位置パラメタや特殊変数はPerlやRuby以外に他の言語にもありますでしょうか

「システムで予約された変数」というのは結構あると思います。CとかJavaの様なコンパイラ系言語は最近触っていないのでよく覚えていませんが‥

> シェルスクリプトの中にはbourne以外にもbashやC Shell,zsh,Perlがありますが

Perlのスクリプトを"shell script"と呼んだことはないし、聞いたこともないです。もちろん、shell script内からperl scriptを実行することは有るでしょうけども、perl scriptをshell scriptと呼ぶことは通常無いと思いますよ。

投稿日時 - 2010-02-28 23:44:33

お礼

ご回答ありがとうございます。
参考になりました。

投稿日時 - 2010-03-01 20:45:03

あなたにオススメの質問