- - PR -
シェル組み込み関数って?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-07-28 19:26
みなさんこんばんワ!トーヤですっ。
シェル組み込み関数について質問です。 以下のテストは、引数が関数に指定されたときに 位置パラメータがその引数の値を代入するものです。 ----------------------------------------- #!/usr/bin/sh welcome() { print "Hello, $1 and $2"; } welcome tom joe ----------------------------------------- を実行すると $1にはtomが、$2にはjoeが代入されて Hello, tom and joe と表示されるはずなのですが、 1行目を実行した時点で「print:コマンドが見つかりません」 というエラーが出てきてしまいました。 printではなくechoならば実行できます。 今回使用したシェルはBシェルで、manでは printは引数を出力、echoは文字を出力する 「シェル組み込み関数」と違いが書かれていますが、 使い分け方が分かりません。 シェル組み込み関数とはいったい何なんでしょうか? また、今回のエラーが出たのはどうしてでしょうか? いつもすみません。よろしくお願いします。 |
|
投稿日時: 2003-07-29 21:13
シェル組み込み関数というのは、シェルにはじめから組み込まれているコマンド(のようなもの)です。
print は printf の誤りでは? この関数は C 言語の printf と同じような役割を果たすコマンドであり、単純に文字列を出力する echo とは異なります。本件の場合は echo のほうが適切です(というか、普通シェルスクリプトで printf なんて使いません)。 |
|
投稿日時: 2003-07-29 21:51
HP-UXのposix標準シェルには組み込みコマンドprintがありますね。
他のOS(LinuxとSolaris)の標準シェルにはないみたいです。 なので、トーヤさんのスクリプトはHP-UXでは正常に動作しますが、 Solarisでは「コマンドが見つからない」となります。 どのOSについてるBシェルを使おうとしてるのでしょうか? あと、manをちょっと見た限りでは、printは標準入力を標準出力に出す ことができる点がechoと違うっぽいです。 [ メッセージ編集済み 編集者: t-wata 編集日時 2003-07-29 21:52 ] |
|
投稿日時: 2003-07-30 10:12
t-wataさん、IZUMI Yusukeさん、
ご回答、ありがとうございまス! t-wataさんのご回答が私の知りたかった全てデス!!! t-wataさんのご指摘の通り、ボクがテストしているマシンの OSはSolarisです。 ホント、頭が上がりませんっス! ありがとうございました! |
1