Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash UNIX脚本-设置动态变量(间接变量引用) 如何从输入文件设置shell变量?_Bash_Variables_Unix_Dynamic - Fatal编程技术网

Bash UNIX脚本-设置动态变量(间接变量引用) 如何从输入文件设置shell变量?

Bash UNIX脚本-设置动态变量(间接变量引用) 如何从输入文件设置shell变量?,bash,variables,unix,dynamic,Bash,Variables,Unix,Dynamic,你好, 我需要从shell脚本中的.ini文件设置动态变量 假设输入文件为input.ini: 在脚本中,我想将var1、var和var3分别设置为它们的val1、val2和val3以获得 echo $var1 val1 echo $var2 val2 ... 我试过: file="input.ini" while IFS== read -r f1 f2 do eval dynvar=$f1 dynvar=$f2 done <"$file

你好,

我需要从shell脚本中的.ini文件设置动态变量

假设输入文件为input.ini:

在脚本中,我想将var1、var和var3分别设置为它们的val1、val2和val3以获得

echo $var1
val1
echo $var2
val2
...
我试过:

file="input.ini"
while IFS== read -r f1 f2
do
   eval dynvar=$f1
   dynvar=$f2    
done <"$file"

echo $var1
echo $var2
echo $var3
file=“input.ini”
而IFS==read-r f1 f2
做
eval dynvar=$f1
dynvar=$f2
完成
或

更多信息

<source | .> filename [arguments] Execute commands from a file in the current shell. 文件名[参数] 从当前shell中的文件执行命令。 解决了的 使用:

file="install.ini"
while IFS== read -r f v
do
  eval "$f=$v"   
done <"$file"
file=“install.ini”
而IFS==read-rfv
做
评估“$f=$v”

谢谢你的回答,但我不明白你的意思。。。事实上,我在搜索网页后解决了这个问题(我从来没有写过这种代码)。请参阅下一个答案,如果可以使用前一个答案中所示的shell命令(如
source
)来完成,为什么要手动执行?。。因为我不明白它是怎么工作的。。我读到它用于执行作为参数传递的文件,但我看不到它与我的问题之间的关系…从文件执行命令,在您的例子中是变量赋值
. input.ini
<source | .> filename [arguments] Execute commands from a file in the current shell.
file="install.ini"
while IFS== read -r f v
do
  eval "$f=$v"   
done <"$file"