带状态的命令行工具/ bash脚本

时间:2013-02-22 19:00:05

标签: bash shell environment-variables

我正在尝试编写一个简单的单文件shell脚本,该脚本应该进行谷歌搜索并输出前五个结果的标题:

> lookup search "Stack Overflow"
100 results

1. Stack overflow
www.stackoverflow.com
(description)

2. ...

然后用户应该能够输入:

> lookup go 1

它将打开用户的第一个结果选择的命令行浏览器。

但是,这需要脚本“记住”最后一个命令的结果。

最好的方法是什么?我应该将结果保存为环境变量吗? (如果是这样,这将涉及获取脚本而不是在其自己的子shell中调用它,这可能违反安全约定/不安全?我真的不知道)我应该将结果保存在临时文本文件中吗?

geeknote中存在类似的功能,但它是在python中实现的,我可能不得不最终挖掘它以找出它的作用;但是,我甚至不确定该解决方案是否适用于我。

1 个答案:

答案 0 :(得分:2)

您可以使用点文件来保存信息,就像您的shell可以跨登录在.history文件中保存cmds一样。

如果您确保在将数据写入文件之前确保数据是干净/安全的,那么您可以对其进行设置,以便在脚本中轻松获取值。如果你把它们保存在t.var中,你可能想要〜/ .yourprogram或某些

$ cat t.var 
A=yahoo.com
B=google.com

然后你可以通过点读取它们:。

$ cat ./s.sh
#!/bin/bash
. t.var
echo ${A}

瞧:

$ bash ./s.sh 
yahoo.com

您只需将名称映射到位置即可。

#!/bin/bash
. t.var
case "$1" in
 1 )
   echo $A;;
 2 )
   echo $B;;
esac

似乎需要权衡解析数据与使用它的方便性。以上只是一种方式。