シェルスクリプトの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をやっている方は別途シェルスクリプトをやる必要はないということでしょうか。
No.2ベストアンサー
- 回答日時:
>意味や効果、やり方等は同じでしょうか
意味は、それぞれの言語やスクリプトで違います。
>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% …
ここの引用で
----------------
「コマンドインタプリタ」の名称で呼ばれる場合は単に「コマンドを解釈する者」の意であり、OSのユーザインタフェースとしての意味合いは失われていることが多い。
----------------
となっているとおり、シェルがたくさんあるのはUNIX系OSの歴史でもあります。つまり互換性ですね。バージョンが上がったり、派生型のOSだと、過去の資産を使えない事がかなり痛手です。それで、バージョンを重ねるたびに、そのまま過去のシェルも残り、UNIX(Linuxも含む)の歴史を追従して、オープン化や共有化されています。
それぞれのシェルの中で当然、コマンドが使用できます。その中にPerlも在るだけです。シェルは、コマンドインプリンタとしての役目を果たしているだけです。内部コマンドと、外部コマンドがあるので、外部コマンドの一つがPerlと言うだけです。他のコマンドも同じです。
と言うことで、
>Perlをやっている方は別途シェルスクリプトをやる必要はないということでしょうか。
は、間違いである事が分かりますね。
No1の方もいっていますが、上記の理由でPerlはシェルではありませんね。だからShell Scriptとはならないわけです。単なる「コマンドインタプリタ」であって、OSのユーザーインターフェースではありませんね(シェルではない)。
No.1
- 回答日時:
> 意味や効果、やり方等は同じでしょうか
たまたま同じな場合があるかもしれませんが、常に同じである保証はどこにもないですね。
> 位置パラメタや特殊変数はPerlやRuby以外に他の言語にもありますでしょうか
「システムで予約された変数」というのは結構あると思います。CとかJavaの様なコンパイラ系言語は最近触っていないのでよく覚えていませんが‥
> シェルスクリプトの中にはbourne以外にもbashやC Shell,zsh,Perlがありますが
Perlのスクリプトを"shell script"と呼んだことはないし、聞いたこともないです。もちろん、shell script内からperl scriptを実行することは有るでしょうけども、perl scriptをshell scriptと呼ぶことは通常無いと思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) HTMLを組み込むことができない言語 3 2022/05/21 10:05
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- その他(プログラミング・Web制作) ログインシェル時のSHELL環境変数 1 2022/06/08 19:21
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
ubuntuで デイスク/deb/loopと...
-
AWSでSSH接続をしたいのですが...
-
tarで纏める際に、複数場外した...
-
ubuntuのシャットダウンが進ま...
-
Linuxのパーティション番号の変...
-
Ubuntuで数字だけのユーザーア...
-
Linux のシェルスクリプトの強...
-
Windowsのローカルディレクトリ...
-
UbuntuにROSをインストールしたい
-
ホストオンリーアダプタで接続...
-
Linuxについて質問です。 以下...
-
shellscript内のコマンドを、su...
-
Ubuntu on Xorgのログインについて
-
テキストファイルをページ番号...
-
mxlinux 起動時エラーについて
-
Linux Ubuntu22.4の起動時エラ...
-
ubuntuサーバーを久々に再起動...
-
ssl_request_logの必要性について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuのシャットダウンが進ま...
-
Windowsのパソコンを使って仮想...
-
ubuntuで デイスク/deb/loopと...
-
AWSでSSH接続をしたいのですが...
-
Ubuntu on Xorgのログインについて
-
LinuxのノートパソコンでDVDコ...
-
linuxサーバーのキャッシュをク...
-
Postfixでドコモメールに送信す...
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Linux Mint 日本語入力できなく...
-
ホストオンリーアダプタで接続...
-
ubuntuのサーバー(virtual box)...
-
VirtualBox ゲストOSにPC内蔵HD...
-
shellscript内のコマンドを、su...
-
Linux Ubuntu22.4の起動時エラ...
-
Ubuntu でinvalid filenameとな...
おすすめ情報