1

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

> lookup search "Stack Overflow"
100 results

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

2. ...

然后用户应该能够输入:

> lookup go 1

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

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

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

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

4

1 回答 1

2

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

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

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

然后,您可以通过 dot: 阅读它们。

$ 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

解析数据与恢复数据的易用性似乎需要权衡取舍。以上只是一种方式。

于 2013-02-22T19:28:49.420 回答