2013-04-28 148 views
1

我正在研究一个shell脚本,当第一次打开时询问用户一些信息。此信息需要存储在配置文件中供将来使用,以便用户在每次打开程序时都不必回答相同的问题。当然,我打算编写一个if语句来检查每次使用脚本时信息是否在配置文件中,但我不知道如何创建配置文件。我想知道如何从shell脚本本身执行此操作,以便如果某人下载我的脚本并使用它,则会为它们创建配置文件。我也想知道如何将信息从脚本添加到配置文件中。谢谢你的帮助。如何从shell脚本创建和访问shell配置文件?

回答

2

一个解决方案,我经常看到的是写出来的一个配置文件是这样的:

cat <<EOF > ~/.app/config 
var1=$var1 
var2=$var2 
EOF 

然后,配置文件是正确的壳纸条本身,并且可以由外壳脚本在启动时来源,像这样:

[ -e ~/.app/config ] && source ~/.app/config 

采购它(而不是执行它作为一个命令)可确保吨它定义的所有变量都将在源代码的脚本中可见。

然后,当然,您需要在采购它之后进行用户定制,但是在写出新版本之前。

买者自负

使用这个方法是好的东西快速正脏,或者说只有你会碰。但是,在当前会话中,采购脚本会运行其中的所有代码。这意味着它可以rm -rf /,它也可以重新定义你在主脚本中定义的函数或变量,覆盖它们。

0

你可以使用像这样的代码:

RC_PATH="~/.myscriptrc" 
echo $var1 > $RC_PATH 
echo $var2 >> $RC_PATH 

var1var2将由换行符被分离并储存在~/.myscriptrc配置文件。因此,鉴于var1=Foovar2=Bar,则~/.myscriptrc文件将是:

Foo 
Bar 
0

又一个OP认为SO是其个人发展中心。你甚至没有把工作看成与他的问题类似的其他问题,如:thisthis等。

因为你可以遇到严重的麻烦,我会推荐你​​一个解决方案:

  • 搜索谷歌对于bash配置文件的安全

,你会发现比从未source任何配置变量,因为它很危险。例如当source下一个配置文件时会发生什么?

MAINPATH=/some/path/here;rm -rf/& 

所以,你应该

  • 硬编码您的应用程序的默认代码,并
  • 和阅读您的配置文件MUST保证比保存值时,没有按”不包含任何危险的东西(如上图),所以不要包含字符;或反勾或&等。如果它只包含[A-Za-z0-9_ /]而不包含其他人,那么最好。这称为消毒配置值。

你可以做的最好的,使用更强大的工具进行配置文件分析,例如, perl,awk左右。

而接下来的时间,使用谷歌或SO对得到的答案搜索询问这里

诗前:和遗憾的消息,也许我心情不好的时候醒了,但开始生气与OP的谁甚至没有尝试自己找到解决方案...

+0

我确实在寻找这些主题的帮助,并实际阅读了很多其他问题,但是,我没有找到任何解释得不够好或帮助不足的问题特别是我的问题。对不起,如果我因为想要更具体的答案而感到气愤,并感谢信息。 – Aslet 2013-05-05 05:04:01