Linux shellscript从文件中读取变量
我不熟悉shell脚本。我正在从事一个项目,其中的需求就像一个脚本文件将设置变量,而另一个脚本文件必须获取这些变量并对其进行操作。我将第一个脚本中的变量存储到一个文件中,并在第二个脚本文件中读取它 在第一个脚本文件first.sh中,我做了如下操作Linux shellscript从文件中读取变量,linux,shell,unix,Linux,Shell,Unix,我不熟悉shell脚本。我正在从事一个项目,其中的需求就像一个脚本文件将设置变量,而另一个脚本文件必须获取这些变量并对其进行操作。我将第一个脚本中的变量存储到一个文件中,并在第二个脚本文件中读取它 在第一个脚本文件first.sh中,我做了如下操作 echo "a=6" > test.dat echo "b=7" >> test.dat echo "c=8" >> test.dat 我将用于它覆盖的第一个变量和它附加的下一个值。因此,文件将始终具有最新的值 还有比
echo "a=6" > test.dat
echo "b=7" >> test.dat
echo "c=8" >> test.dat
我将
用于它覆盖的第一个变量和它附加的下一个值。因此,文件将始终具有最新的值
还有比这更好的方法吗
在第二个脚本文件中,如何读取和填充适当的值?您可以使用
源代码从脚本加载此变量:
source test.dat
或者只是
. test.dat
例如:
$ echo "a=6" > test.dat ; echo "b=7" >> test.dat ; echo "c=8" >> test.dat
$ cat test.dat
a=6
b=7
c=8
$ . test.dat
$ echo $a $b $c
6 7 8
$ cat generate.sh
echo a=6
echo b=7
echo c=8
$ bash generate.sh
a=6
b=7
c=8
$ eval $(bash generate.sh)
$ echo $a $b $c
6 7 8
如果您有生成这些变量的脚本/程序,也可以使用eval
例如:
$ echo "a=6" > test.dat ; echo "b=7" >> test.dat ; echo "c=8" >> test.dat
$ cat test.dat
a=6
b=7
c=8
$ . test.dat
$ echo $a $b $c
6 7 8
$ cat generate.sh
echo a=6
echo b=7
echo c=8
$ bash generate.sh
a=6
b=7
c=8
$ eval $(bash generate.sh)
$ echo $a $b $c
6 7 8
要读取第二个脚本中的变量,只需将其源代码(导入)即可:
在编写文件方面,有不同的方法。哪个更好取决于许多因素。一种常见的方法是使用heredoc:
cat > test.dat << EOF
a=6
b=7
c=8
EOF
cat>test.dat总是有修改的机会,编写变量文件的方法很好。您仍然可以按如下方式更改此设置:
echo-e“a=6\nb=7\nc=8”>test.dat
要通过脚本读取变量文件,可以添加以下内容:
源测试.dat
或
(我的建议:-)
。test.dat
另一种看起来稍微整洁的方法是{echo a=6;echo b=7;echo c=8}>test.dat
或单个printf命令:printf%s=%s\n“a 6 b 7 c 8>test.dat
@NormanGray,在大括号后面需要一个空格,最后一个echo命令必须以分号结尾--.@glennjackman说得对。我用zsh
对它进行了测试——bash和sh显然更复杂。@Igor,好的,我打开了fiel test.dat并读取了我想要的变量,但之后我可以关闭这个test.dat文件并返回到脚本文件,然后恢复当前脚本文件的剩余会话。或者没有必要。