JP1/Advanced Shell
形式
typeset [{-L|+L}[n]][{-R|+R}[n]][{-Z|+Z}[n]] [-l|+l|-u|+u][{-i|+i}[n]][-r|+r|-x|+x] [{-f|+f}[-t|+t]] [-p|+p] [--][name[=value]...]
機能
変数や関数の属性と値を明示的に宣言します。nameに指定された変数や関数の属性と値を明示的に宣言し,定義します。
このコマンドを関数内で実行すると,関数内で有効なローカル変数として定義します。関数内で有効なローカル変数を定義した場合,関数の完了時に値と属性を回復します。
このコマンドのオプションは文字列書式オプション,属性・型オプション,関数オプション,表示オプションの4種類に分類されます。
引数
オプションをハイフンで指定した場合,指定したオプションは有効に設定されます。オプションをプラスで指定した場合,指定したオプションは無効に設定されます。
- [{-L|+L}[n]][{-R|+R}[n]][{-Z|+Z}[n]]
- -L|+L
文字列書式オプションです。
-Lオプションでは,valueの内容に対して左詰めにします。+Lオプションでは,-Lオプションで指定した左詰めにする属性を解除します。
変数に値を代入する際にvalueに指定された内容が領域長よりも短い場合は,valueの最後から領域の終端までスペースを挿入します。valueに指定された内容が領域長よりも長い場合は,valueの先頭から領域長までが代入され,残りは切り捨てになります。同時に-Zオプションを指定した場合,先行する0の削除もします。-Rオプションを指定した場合,あとに指定した方を設定します。
-Rオプションでnameを定義済みの場合は,右詰めの設定は無効になります。
- -R|+R
文字列書式オプションです。
-Rオプションでは,valueの内容に対して右詰めにします。+Rオプションでは,-Rオプションで指定した右詰めにする属性を解除します。
変数に値を代入する際にvalueに指定された内容が領域長よりも短い場合は,領域の先頭からvalueの先頭までスペースを挿入します。valueに指定された内容が領域長よりも長い場合は,valueの最後から領域長までが代入され,残りは切り捨てになります。同時に-Lオプションを指定した場合,あとに指定した方を設定します。
-Lオプションでnameを定義済みの場合は,左詰めの設定は無効になります。
- -Z|+Z
文字列書式オプションです。
-Zオプションでは,valueの内容に対してゼロ詰めにします。+Zオプションでは,-Zオプションで指定したゼロ詰めにする属性を解除します。-Lオプションが設定されていない場合は右詰めになります。valueに指定された内容の先頭文字が数字の場合は,領域の先頭からvalueの先頭までゼロ詰めになり,数字以外の文字の場合は,領域の先頭からvalueの先頭までスペースを挿入します。
- n
nにはvalueの領域長を指定します。nが0またはnを省略した場合は,valueの長さを領域長にします。nに16385以上を指定した場合は,エラーになります。
- [-l|+l|-u|+u]
- -l|+l
文字列書式オプションです。
-lオプションでは,nameに指定された変数に代入されている英字の大文字を小文字に変換します。変数に代入されている文字列に大文字と小文字が混在している場合,大文字だけを小文字に変換します。
+lオプションでは,-lオプションで指定した変数に代入されている,英字の大文字を小文字に変換する属性を解除します。
- -u|+u
文字列書式オプションです。
-uオプションでは,nameに指定された変数に代入されている英字の小文字を大文字に変換します。変数に代入されている文字列に大文字と小文字が混在している場合,小文字だけを大文字に変換します。
+uオプションでは,-uオプションで指定した変数に代入されている,英字の小文字を大文字に変換する属性を解除します。
- [{-i|+i}[n]][-r|+r|-x|+x]
- -i|+i
属性・型オプションです。
-iオプションでは,nameに指定された変数の型を整数型として宣言します。valueには代入する値を10進数で指定します。-iで10進数以外の基数を指定した場合,nameに指定された変数の内容の先頭に’基数#’が付加されます。-Zオプションでゼロ詰めをしている場合は,’基数#’の先頭までをゼロ詰めにします。+iオプションでは,nameに指定された変数の整数型属性を解除します。
- n
nには出力時に何進数で表示するかを指定します。nを省略または0を指定し,かつnameが未定義の変数の場合,10進数として扱われます。nを省略または0を指定し,かつnameが定義済みの変数の場合,定義されている基数に従います。nに1や17以上を指定した場合は,エラーになります。
- -r|+r
属性・型オプションです。
-rオプションでは,nameに指定された変数の属性を読み込み専用にします。属性を読み込み専用にすると,それ以降,変数の値および属性を変更できません。+rオプションでは,nameに指定された変数の読み込み専用属性を解除します。
- -x|+x
属性・型オプションです。
-xオプションでは,nameに指定された変数をエクスポートします。+xオプションでは,nameに指定された変数のエクスポートを解除します。
- {-f|+f}[-t|+t]
- -f|+f
関数オプションです。
-fオプションでは,nameに指定された処理対象を変数ではなく関数として扱います。-fオプションを指定し実行した場合,nameに指定された関数を標準出力に出力します。+fオプションを指定し実行した場合,関数を出力しません。-fオプションだけを指定し実行した場合,定義されているすべての関数を標準出力に出力します。
- -t|+t
関数オプションです。
-tオプションでは,nameに指定された関数のトレースモードを有効にします。このオプションは,-fオプションと同時指定された場合に有効になります。+tオプションでは,nameに指定された関数のトレースモードを無効にします。
- -p|+p
- 表示オプションです。
- -pオプションでは,定義されているすべての変数を「typeset 変数名=値」の書式で標準出力に出力します。ただし,-pオプションとnameを同時に指定した場合,nameに指定された変数の属性の宣言が優先されます。+pオプションでは,定義されているすべての変数を「typeset 変数名」の書式で標準出力に出力します。
- オプション指定なし
- 表示オプションです。
- すべてのオプションを指定しないで実行した場合,定義されているすべての変数を「typeset 宣言されている属性・型オプションの値 変数名」の書式で標準出力に出力します。ただし,属性・型オプションが宣言されていない場合は変数名を左に詰めて出力します。
- nameを指定しないで,オプションだけ指定
- 表示オプションです。
- 指定したオプションの属性と等しい変数,および関数をすべて出力します。ハイフンで指定した場合,「変数名=値」または関数の内容が標準出力に出力されます。プラスで指定した場合,「変数名」または「関数名」が標準出力に出力されます。
- --
- オプション終端文字です。このオプション以降に指定したオプションは,val(変数)として解釈します。
- name
- 属性や値を宣言する変数名,配列名,または関数名を複数指定します。
- 配列名を指定した場合,配列を構成する全要素が対象になります。配列の1つの要素を指定した場合も配列の全要素が対象になります。
- nameの後ろに=を指定すると,nameへの値の代入と属性の宣言を同時にできます。
- nameに指定された変数の属性が読み込み専用で,値を代入しようとした場合,エラー終了します。
- value
- nameに代入する値を指定します。valueを指定しなかった場合,nameには改行文字が代入され,属性を変更します。
戻り値
戻り値 意味 0 正常終了 1 エラー終了
注意事項
- 変数または配列を指定できますが,関数には影響を与えません。
- 定義されていない変数を読み込み専用属性にできます。
- nにsigned int型の範囲を超える値を指定すると桁あふれが発生し,あふれた値で動作します。signed int型の範囲内の値を指定してください。
- マルチバイト文字を含む変数に対して,左詰めまたは右詰めで切り捨てられると,マルチバイト文字を構成する一部のデータが消失することがあります。この場合,文字として不完全なバイト列が代入されることがあります。
- 引数が指定できるオプションとその引数を1つのハイフンで同時に指定できません。8進数のint型で,かつ右詰め16桁として定義する場合は,「-i8 -R16」と指定します。「-i8R16」のように指定した場合は,エラー終了します。
- -fオプションと同時に-xオプションを指定した場合,-xオプションの指定は無視されます。typesetコマンドは-fオプションが指定された場合と同じ動作をします。
使用例
- 変数numの属性を左に詰めて,10桁の整数型に変更します。
typeset -L10 -i num- 関数funcのトレースモードを有効にします。
typeset -ft func
All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.