1. バッククォート
  2. バッククォート以外

    コマンドの実行結果を変数に代入する方法です。

    バッククォート

    バッククォート(`)で文字列中のコマンドを実行することができます。 これを使って変数にコマンドの実行結果を代入します。

    [変数名]=`コマンド`

    例 pwdコマンドの結果を変数のDIRに代入

    DIR=`pwd`

    • コマンドのネスト

    • バッククォートをバックスラッシュでエスケープすることで、コマンドのネストも可能になります。

      例 pwdコマンドの結果に対して"ls -ld"を実行

      STR=`ls -ld \`pwd\``

      最初に実行されるコマンドは、以下の赤色の個所のpwdコマンドになります。 その後、pwdコマンドの結果に対してlsコマンドが実行されます。

      STR=`ls -ld \`pwd\``

      これは以下と同じになります。

      DIR=`pwd`
      STR=`ls -ld $DIR`

    • コマンドの実行結果を配列に代入

    • コマンドの実行結果を配列にする場合は、バッククォートで囲んだコマンドを"("と")"で囲みます。

      [変数]=(`コマンド`)

      例 現在のディレクトリ内のファイルを求めて配列にする

      #!/bin/bash
      LS=(`ls -1`)     # 現在のディレクトリ内のファイルを配列にする
      
      
      for FNAME in "${LS[@]}"
      do
         SIZE=`ls -l $FNAME | awk '{print $5}'`
         echo "$SIZE $FNAME"
      done

    バッククォート以外

    バッククォート以外では、コマンドを"$("と")"で囲むことでも可能です。

    例 pwdコマンドの結果を変数DIRに設定

    DIR=$(pwd)