サンプルファイル:
/Variable1=Value1/Variable2=Value Value Value/Variable3=Value3 Value3/
変数を読んで設定したいです。これは私が入力しecho $Variable1
てValue1
出力などを取得できることを意味します。たくさん試してみましたが、長すぎて変数名が変更されても機能しません。効果的な方法を知っている人はいますか?
ベストアンサー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
マングラインは、単に等号の後の値を参照するために使用されます。