ループ内の変数内の変数

ループ内の変数内の変数

ループ内で異なる変数名を使用して変数を呼び出す方法について質問があります。

次のスクリプトは機能しません。

#!/bin/bash
# Comparing test1.txt with test2.txt, test1.ini with test2.ini, test1.conf with test2.conf

FIRSTFILE1=test1.txt;
SECONDFILE1=test2.txt;
FIRSTFILE2=test1.ini;
SECONDFILE2=test2.ini;
FIRSTFILE3=test1.conf;
SECONDFILE3=test2.conf;

for NUM in {1..3};
do
  diff --brief <(sort $FIRSTFILE$NUM) <(sort $SECONDFILE$NUM) > /dev/null
  value=$?
  if [ $value -eq 1 ]
  then
    echo "different"
  else
    echo "identical"
  fi
done

ベストアンサー1

間接的なパラメータ拡張を探しています。これを達成するには、Bashで感嘆符を使用できます。

#!/bin/bash                                                                        
FIRSTFILE1=test1.txt;
SECONDFILE1=test2.txt;
FIRSTFILE2=test1.ini;
SECONDFILE2=test2.ini;
FIRSTFILE3=test1.conf;
SECONDFILE3=test2.conf;

for NUM in {1..3};
do
    a=FIRSTFILE$NUM
    b=SECONDFILE$NUM
    echo ${!a}
    echo ${!b}
done

onelinerを見つけるには、より多くのテストが必要です:).詳細については、次を参照してください。http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html

おすすめ記事