2012-11-02 31 views
1

我需要检索已存储在文件中的变量。我正在捕获一个安装prostgress和一些其他程序的变量。以下是我在安装脚本开始时用来创建variables.sh文件的脚本。从文件调用变量

#!/斌/庆典 #初始化

功能暂停(){ 读-p “$ *” }

回声 “输入数据库用户名” 回声 “”

read dbuser 

echo " " 
echo " Enter name of database " 
echo " " 

read dbname 

echo " " 
echo " Enter db password " 
echo " " 

read pws 

echo " " 
echo " Enter Port Number " 
echo " " 

read port 

echo " " 
echo " Enter URL i.e. my.hospital.com:8191 or 78.12.156.234:8191 " 
echo " " 

read url 

cat > variables.dat << EOF 

dbuser=$dbuser 
dbname=$dbname 
pws=$pws 
port=$port 
url=$url 

EOF 

if [ -f variables.sh ]; 

    then 
    echo " Data stored ready for next phase " 

    else 

    echo " Data not stored - exit program start again " 
    echo " " 
    pause " Press [CTL] [Z] to exit the program now " 

fi 

chmod +x variables.sh 

exit 

在执行我写的其他模块的过程中。我希望能够打开或调用变量文件并将变量传递给正在执行的脚本。因此,我的pac-install.sh将包含variables.sh文件并将其内容传递给pac-install.sh脚本,并能够使用dbuser = $ dbuser。我希望这更具体。

感谢您的任何帮助。

+1

也许东西快速和肮脏? 'cat文件| grep a = | sed s/a = //' – Austin

+0

奥斯汀很快就让我变量,但是我怎样才能让这个变量读取? – user1794918

+0

对不起,我的意思是如何将变量传递给读命令? – user1794918

回答

0

也许是bash 来源命令是你在找什么?

如果文件variables.sh包含线

dbuser="the user" 
dbname="the name" 
... 

那么你可以从一个bash shell脚本执行

source variables.sh 

阅读并从该文件执行的命令。这会将这些值分配给shell变量$dbuser,$dbname等。

请注意,如果值包含空格,则应将值放在引号中。

如何读回从该文件的变量:

#!/bin/bash 

source variables.sh 
echo "dbuser=$dbuser" 
echo "dbname=$dbname" 
+0

你能发表一个如何读取和执行的例子吗?我在脚本中包含了variables.sh,但无法将信息传递给运行脚本。谢谢! – user1794918

+0

@ user1794918:我在答案中添加了一个示例。 –

+0

谢谢!就是这样。我现在有脚本工作。 – user1794918