我有一个具有以下格式的文件:
1个
2 b
3 c
我想遍历它,将第二个参数转换为变量,并为每行将第一个参数存储在该变量中。
因此,在这种情况下,创建变量'a'并在其中存储1,创建b并在其中存储2,依此类推。有一个简单的方法吗?
答案 0 :(得分:0)
您可以尝试以下操作:
while read line ; do
Var=$(echo $line |awk '{print $2}')
Value=$(echo $line |awk '{print $1}')
export $Var=$Value
done < file
echo $a
echo $b
echo $c
哪个会产生:
> ./script.sh
1
2
3
答案 1 :(得分:0)
使用名称引用执行间接分配。
while read -r value name; do
declare -n var=name
var=$value
done
declare +n var # optional; makes var stop being a nameref
在bash
4.3之前,您可以更普遍地使用declare
(但更脆弱)。
while read -r value name; do
declare "$name=$var"
done < file