具有状态的命令行工具/bash脚本
我正在尝试编写一个简单的单文件shell脚本,用于谷歌搜索并输出前五个结果的标题:具有状态的命令行工具/bash脚本,bash,shell,environment-variables,Bash,Shell,Environment Variables,我正在尝试编写一个简单的单文件shell脚本,用于谷歌搜索并输出前五个结果的标题: > lookup search "Stack Overflow" 100 results 1. Stack overflow www.stackoverflow.com (description) 2. ... 然后,用户应该能够输入: > lookup go 1 它将打开用户选择的命令行浏览器,以显示第一个结果 但是,这需要脚本“记住”最后一个命令的结果 最好的方法是什么?我应该将结果保存为
> lookup search "Stack Overflow"
100 results
1. Stack overflow
www.stackoverflow.com
(description)
2. ...
然后,用户应该能够输入:
> lookup go 1
它将打开用户选择的命令行浏览器,以显示第一个结果
但是,这需要脚本“记住”最后一个命令的结果
最好的方法是什么?我应该将结果保存为环境变量吗?(如果是这样的话,这将涉及到寻找脚本的来源,而不是在它自己的子shell中调用它,这可能违反安全约定/不安全?我真的不知道)我应该将结果保存在临时文本文件中吗
中也存在类似的功能,但它是用python实现的,我可能最终不得不深入研究它,以找出它在哪里实现的;但是,我甚至不能完全确定该解决方案是否适用于我。您可以使用点文件来保存信息,就像您的shell可以跨登录在.history文件中保存cmds一样 如果您能够在将数据写入文件之前确保数据是干净/安全的,那么您可以对其进行设置,以便在脚本中轻松获取这些值。如果您将它们保存在t.var中,您可能需要~/.your程序或类似的程序
$ 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
解析数据与恢复数据的易用性之间似乎存在一种折衷。以上只是一种方法。如果打开两个终端,并在每个终端上运行不同的搜索,你会怎么做?@AdamBatkin我想不定义这种行为,但如果在一个终端上搜索不会影响另一个终端,那会(稍微)好一些。