3

我是 shell 脚本的新手。我正在开发一个项目,其中的要求就像一个脚本文件将设置变量,而另一个脚本文件必须获取这些变量并对其进行操作。我将第一个脚本中的变量存储到一个文件中,并在第二个脚本文件中读取它。

在第一个脚本文件 first.sh 中,我正在做

echo "a=6" > test.dat
echo "b=7" >> test.dat
echo "c=8" >> test.dat

我使用>它覆盖的第一个变量和它附加的下一个值。因此该文件将始终具有最新值。

还有比这更好的方法吗?

在第二个脚本文件中如何读取和填充适当的值?

4

4 回答 4

9

您可以使用以下脚本从脚本加载此变量source

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

如果您有生成这些变量的脚本/程序,您也可以使用eval.

例子:

$ 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
于 2012-07-24T10:18:01.527 回答
1

要读取第二个脚本中的变量,您只需获取它(导入它):

## Put this line in your second script
. test.dat
于 2012-07-24T10:19:12.320 回答
0

总是有修改的机会,写你的变量文件的方法很好。您仍然可以按如下方式进行更改:

echo -e "a=6\nb=7\nc=8" > test.dat

要通过脚本读取变量文件,您可以添加以下内容:

源测试.dat

或者

(我的建议:-))

. 测试数据

于 2012-07-24T20:12:15.890 回答
0

在编写文件方面,有不同的方法。哪个更好取决于许多因素。一种常见的方法是使用heredoc:

cat > test.dat << EOF
a=6
b=7
c=8
EOF
于 2012-07-24T14:45:04.753 回答