2013-02-22 92 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 

似乎有一個權衡解析數據與易於使用它退出。以上只是一種方法。