これらのファイルをどのように解析して変数を定義できますか? [閉鎖]

これらのファイルをどのように解析して変数を定義できますか? [閉鎖]

サンプルファイル:

/Variable1=Value1/Variable2=Value Value Value/Variable3=Value3 Value3/ 

変数を読んで設定したいです。これは私が入力しecho $Variable1Value1出力などを取得できることを意味します。たくさん試してみましたが、長すぎて変数名が変更されても機能しません。効果的な方法を知っている人はいますか?

答え1

bash出発点は次のとおりです。

OIFS="$IFS"
IFS=/; set -f
for piece in $(cat file)
do
  var=$(echo "$piece" | cut -d= -f1)
  val=$(echo "$piece" | cut -d= -f2-)
  [ -n "$var" ] && eval $var=\"$val\"
done
IFS="$OIFS"
unset piece var val

空の変数名はスキップされますが、変数名自体の完全性チェックは行われません。

2番目の方法は、次の方法を見つけることに決めたからですread

declare -a vars
IFS=/ read -a vars < file
for piece in ${vars[*]}
do 
  mangle=$(echo "$piece" | sed 's/=\(.*\)/="\1"/')
  eval $mangle
done
unset vars piece mangle

マングラインは、単に等号の後の値を参照するために使用されます。

答え2

. <(
    awk '
      BEGIN{RS="/";FS="="}
      NF==2{printf "%s=\"%s\"\n", $1, $2}
    ' file
)

awkこれは次のテキストを作成するために使用されます。

Variable1="Value1"
Variable2="Value Value Value"
Variable3="Value3 Value3"

これはソースなので、Variable{1,2,3}で見つけることができますsh

いくつかの点:値にantまたはが含まれていないと/想定さ=れます"

答え3

$ printf "%s\n" "$Variable1" "$Variable2" "$Variable3"



$ cat file
/Variable1=Value1/Variable2=Value Value Value/Variable3=Value3 Value3/ 
$ source <(tr / "\n" < file | sed -r 's/=(.*)/="\1"/')
$ printf "%s\n" "$Variable1" "$Variable2" "$Variable3"
Value1
Value Value Value
Value3 Value3

答え4

Bashの場合:(文字列が「liste.txt」というファイルにある場合)

IFS="/"
for val in $(cat liste.txt); do echo "$val" | sed -r "s/=(.*)$/=\"\1\"/g" | eval; done

その後、次のことを試してください。

echo "$Varaible1"
echo "$Variable2"

など。

関連情報