我正在尝试编写一个简单的单文件shell脚本,该脚本应该进行谷歌搜索并输出前五个结果的标题:
> lookup search "Stack Overflow"
100 results
1. Stack overflow
www.stackoverflow.com
(description)
2. ...
然后用户应该能够输入:
> lookup go 1
它将打开用户的第一个结果选择的命令行浏览器。
但是,这需要脚本“记住”最后一个命令的结果。
最好的方法是什么?我应该将结果保存为环境变量吗? (如果是这样,这将涉及获取脚本而不是在其自己的子shell中调用它,这可能违反安全约定/不安全?我真的不知道)我应该将结果保存在临时文本文件中吗?
geeknote中存在类似的功能,但它是在python中实现的,我可能不得不最终挖掘它以找出它的作用;但是,我甚至不确定该解决方案是否适用于我。
答案 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
似乎需要权衡解析数据与使用它的方便性。以上只是一种方式。