9.3.23 setコマンド(シェルオプションを設定する,配列を作成する,または変数の値を表示する)
形式
set [-a|+a][-f|+f][-u|+u][-v|+v][-x|+x] [{-o|+o}[opt]]... [{-A|+A}name][--][val ...] [{-D|+D}name][--][{ val ... } ...]
機能
シェルオプションの設定,配列の作成,または変数の値を表示します。
このコマンドは,シェルオプションの設定と配列の作成を同時に指定できます。同時に指定する場合は,シェルオプション,配列の作成の順に指定してください。配列の作成を先に指定すると,-Aオプションおよび-Dオプション以降の内容をnameおよびvalとして解釈します。
引数
オプションは同時に複数指定できます。同じオプションを複数回指定した場合,最後に指定した内容が設定されます。
オプションを指定しないで実行すると,割り当てられているすべての変数が「変数名=値」の書式で標準出力に出力されます。
- -a|+a
-a:allexportオプションを有効にします。
+a:allexportオプションを無効にします。
- -f|+f
-f:noglobオプションを有効にします。
+f:noglobオプションを無効にします。
- -u|+u
-u:nounsetオプションを有効にします。
+u:nounsetオプションを無効にします。
- -v|+v
-v:verboseオプションを有効にします。有効にすると,コマンドや制御文などの区分に関係なく,ファイルから入力した行をすべて出力します。出力する内容を次に示します。
・コメント
・存在しないコマンド
・if文やcase文の条件を満たさないため,実行されないコマンド
・while文やfor文のループに一度も入らないで,実行されなかったコマンド
・run属性によってスキップされたジョブステップ
+v:verboseオプションを無効にします。
- -x|+x
-x:xtraceオプションを有効にします。
+x:xtraceオプションを無効にします。
- -o|+o
-o:optに指定されたシェルオプションを有効にします。また,現在設定されているシェルオプションの一覧を表示します。
+o:optに指定されたシェルオプションを無効にします。また,現在有効に設定されているシェルオプションをコマンドラインに入力できる書式で表示します。
- opt
設定するシェルオプションの名称を指定します。指定できるシェルオプションの名称については,「5.6 シェルオプション」を参照してください。
- -A|+A
1次元配列に値を代入する場合に指定します。
-Aオプションを指定し実行すると,nameに指定した配列や変数がすでに存在している場合,nameの内容を消去してから,nameに指定した配列や変数へvalに指定した値を代入して作成します。valに指定した引数の数だけ,配列の要素を作成します。
+Aオプションを指定し実行すると,nameに指定した配列や変数が存在していてもnameの内容は消去しないで,nameに指定した配列や変数へvalに指定した値を代入します。代入する要素数が既存の配列の要素数より少ない場合,代入されない配列要素の値は変更されません。nameに指定した配列や変数がすでに存在しない場合は,-Aオプションを指定した場合と同じ動作となります。
作成できる配列の要素数は2から65,536で,valの個数が1つの場合は配列ではなく変数を作成します。また,複数の配列を同時に作成できません。
- -D|+D
-
2次元配列に値を代入する場合に指定します。
-Dオプションを指定し実行すると,nameに指定した配列や変数がすでに存在している場合,nameの内容を消去してから,nameに指定した配列や変数へvalに指定した値を代入して作成します。valに指定した引数の数だけ,配列の要素を作成します。
+Dオプションを指定し実行すると,nameに指定した配列や変数が存在していてもnameの内容は消去しないで,nameに指定した配列や変数へvalに指定した値を代入します。代入する要素数が既存の配列の要素数より少ない場合,代入されない配列要素の値は変更されません。nameに指定した配列や変数がすでに存在しない場合は,-Dオプションを指定した場合と同じ動作となります。
作成できる配列の要素数は65,536×64で,valの個数が1つの場合は配列ではなく変数を作成します。また,複数の配列を同時に作成できません。
- name
割り当てる配列の名称を指定します。nameに読み込み専用属性の変数を指定した場合,エラー終了します。
- --
オプション終端文字です。このオプション以降に指定したオプションは,valとして解釈します。
- val
1次元配列の要素に代入する値を指定します。valだけを指定し実行すると,valに指定された値は位置パラメーターに代入されます。valを複数指定した場合は,左から$1,$2...の順序で代入されます。
2次元配列の要素に代入する値を指定する場合は,括弧 { } で囲んで指定する必要があります。括弧とvalの間には1つ以上の空白文字を入れる必要があります。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1 |
エラー終了 |
注意事項
この特殊組み込みコマンドは,コマンドの構文を誤るとコマンドを実行しているシェルが終了します。
braceexpandオプションとnoglobオプションを同時に指定した場合,noglobオプションが優先的に適用され,ブレース展開は無効になります。
使用例
1次元配列testを作成し,test[0]にa01,test[1]にa02,test[2]にa03を代入します。
set -A test a01 a02 a03
-
2次元配列test2を作成し,test[0][0]にa01,test[0][1]にa02,test[0][2]にa03を代入します。
set -D test { a01 a02 a03 }