Go to main content
マニュアルページ セク ション 1: ユー ザーコマンド

印刷ビューの終了

更新: 2016年12月6日
 
 

readonly(1)

名前

readonly - 変数の値の再設定による書き換えを防ぐシェル組み込み関数

形式

sh

readonly [name]...

ksh88

**readonly [name [= value]]...
**readonly -p

ksh

++readonly [-p] [name [= value]]...

説明

sh

指定された各 name に「読み取り専用」のマークを付け、これらの名前が後続の割り当てでは変更できないようにします。引数を省略すると、読み取り専用と指定された名前がすべて一覧表示されます。

ksh88

指定された name を読み取り専用にします。あとの代入でこれらの名前を変更できないようにします。

–p を指定したとき、readonly は、すべての読み取り専用変数の名前と値を、次の形式で標準出力に書き出します。

"readonly %s=%s\n", name, value

これは、name が設定されている場合です。

"readonly $s\n", name

これは、name が設定されていない場合です。

コマンドとしてシェルに再入力できる形式で書き込まれるため、同じ読み取り専用の属性と値をシェル実行環境で再現するときに便利です。保存しておいた出力をシェルに再入力するときには、次のような制限があります。

  1. 出力時に値が設定されていた変数には、読み取り専用の属性は設定されません。

  2. 出力時に設定されていなかった変数には、保存しておいた出力をシェルに再入力するときには、値は設定されません。

このマニュアルページでは、1 つまたは 2 つのアスタリスク (**) が先頭に付加されている ksh88(1) コマンドは、次のような特殊な処理を受けます。

  1. コマンドが完了しても、コマンドの直前の変数代入リストは依然として有効です。

  2. 入出力のリダイレクトは変数代入後に行われます。

  3. エラーが発生すると、それを含むスクリプトは中止されます。

  4. 変数代入形式で、** を先頭に持つコマンドに続くワードは、変数代入と同一の規則で展開されます。つまり、チルド置換は = 符号のあとに実行され、ワード分割とファイル名生成は実行されません。

ksh

readonly は、名前で指定された各変数に読み取り専用の属性を設定します。これにより、値を変更できなくなります。=value が指定されている場合は、変数が読み取り専用になる前に変数名が value に設定されます。

名前を指定しない場合は、すべての読み取り専用変数の名前と値が標準出力に書き込まれます。

引数でフィールド分割やパス名展開が実行されないように、readonly は宣言コマンドとしてシェルに組み込まれています。チルド展開は値に対して行われます。

–p

現在の読み取り専用変数を再作成するために、シェルへの入力として使用可能な readonly コマンドの形式で出力されます。

このマニュアルページでは、1 つまたは 2 つの + (プラス符号) が先頭に付加されている ksh(1) コマンドは、次のような特殊な処理を受けます。

  1. コマンドが完了しても、コマンドの直前の変数代入リストは依然として有効です。

  2. 入出力のリダイレクトは変数代入後に行われます。

  3. エラーが発生すると、それを含むスクリプトは中止されます。

  4. これらは有効な関数名ではありません。

  5. 変数代入形式で、++ を先頭に持つコマンドに続くワードは、変数代入と同一の規則で展開されます。つまり、チルド置換は = 符号のあとに実行され、フィールド分割とファイル名生成は実行されません。

終了ステータス

ksh

次の終了ステータスが返されます。

0

正常終了。

>0

エラーが発生した。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os

関連項目

ksh(1), ksh88(1), sh(1), typeset(1), attributes(5)