- PR -

シェル組み込み関数って?

1
投稿者投稿内容
トーヤ
ベテラン
会議室デビュー日: 2003/06/12
投稿数: 63
投稿日時: 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は文字を出力する
「シェル組み込み関数」と違いが書かれていますが、
使い分け方が分かりません。
シェル組み込み関数とはいったい何なんでしょうか?
また、今回のエラーが出たのはどうしてでしょうか?

いつもすみません。よろしくお願いします。
Izumi, Y.
ベテラン
会議室デビュー日: 2002/03/19
投稿数: 77
お住まい・勤務地: 東京
投稿日時: 2003-07-29 21:13
シェル組み込み関数というのは、シェルにはじめから組み込まれているコマンド(のようなもの)です。

print は printf の誤りでは? この関数は C 言語の printf と同じような役割を果たすコマンドであり、単純に文字列を出力する echo とは異なります。本件の場合は echo のほうが適切です(というか、普通シェルスクリプトで printf なんて使いません)。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 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/06/12
投稿数: 63
投稿日時: 2003-07-30 10:12
t-wataさん、IZUMI Yusukeさん、
ご回答、ありがとうございまス!

t-wataさんのご回答が私の知りたかった全てデス!!!
t-wataさんのご指摘の通り、ボクがテストしているマシンの
OSはSolarisです。

ホント、頭が上がりませんっス!
ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)