2013-02-22 99 views
1

我想写应该做一个谷歌搜索和输出的第一个五年结果的标题简单的单文件的shell脚本的bash脚本:命令行工具/使用状态

> lookup search "Stack Overflow" 
100 results 

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

2. ... 

然后用户应该能够输入:

> lookup go 1 

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

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

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

geeknote中存在类似的功能,但它在python中实现,我可能不得不通过挖掘来找出它在哪里做到这一点;但是,我甚至不完全确定解决方案适用于我。

+0

如果您打开两个终端并在每个终端中执行不同的搜索,您会做什么? – 2013-02-22 19:05:36

+0

@AdamBatkin我会将这个行为定义为undefined,但如果在一个终端上搜索不会影响另一个终端,它会(稍微)更好。 – 2013-02-22 19:46:31

回答

2

您可以使用点文件来保存信息,与您的shell可以通过登录名将文件保存在.history文件中的方式相同。

如果您确信数据在写入文件之前是干净/安全的,那么您可以对其进行设置,以便在脚本中进行采集。如果您在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 

似乎有一个权衡解析数据与易于使用它退出。以上只是一种方法。