変数,配列(shスクリプト)
変数
変数の設定
=
を使う- 変数の値の設定は変数名の先頭に
$
を付けない =
の前後にスペースを入れない (前後にスペースがあるとエラーになるため)- 型はない
- 変数名の大文字・小文字は区別される
コマンドの実行結果を変数に設定
変数名=`コマンド名`
コマンドの出力を変数に設定したい場合は、「``
」(バッククォート) を使用する
標準エラー出力のみを変数に設定する
変数名=`コマンド名 2>&1 >/dev/null`
標準出力・標準エラー出力の両方を変数に設定する
変数名=`コマンド名 2>&1`
変数 sample の値を表示する
echo $sample
変数 sample の値と「123」を表示
echo ${sample}123
変数 sample の値と変数 sample2 の値を表示
echo ${sample}${sample2}
変数の値を他の変数へ設定する
sample2="$sample"
変数の値を変数名として値を参照する
eval echo '$'$sample
変数の削除
unset 変数名
変数を読み取り専用に設定する
readonly 変数名="aaaa"
直前に実行されたコマンドの終了ステータスが設定される変数
$?
コマンド正常終了の場合は「0」、異常終了の場合は「0 以外」がセットされる。
実行時に指定された引数の数が設定される変数
$#
たとえば $ ./a.sh AAA BBB CCC
のように実行された場合、シェルスクリプト a.sh 内で変数 $#
を参照するとその値は「3」
a.sh
a.sh実行、引数なしと引数あり
配列
配列の設定
配列名=(値1 値2 値3)
全ての値を出力する場合は、インデックスに「@」を指定
echo ${array[@]}
配列の各要素に値を設定する
配列名[インデックス]=値
例:array[0]="sample"
配列に要素を追加する(一つの値の場合)
配列名+=(値)
例:array+=("sample")
配列に要素を追加する(複数の値の場合)
配列名+=(値1 値2 値3)
例:array+=(sample sample2 sample3)
変数の値を要素として追加する
配列名+=($変数名)
例:array+=("$sample")
配列の要素を参照する
${配列名[インデックス]}
例:echo ${array[0]}
配列の全要素を参照する
${配列名[@]}
例:echo ${array[@]}
配列の要素数を参照する
${#配列名[@]}
例:echo "${#array[@]}"