1

Google検索を実行して最初の5つの結果のタイトルを出力することになっている単純な単一ファイルのシェルスクリプトを作成しようとしています:

> lookup search "Stack Overflow"
100 results

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

2. ...

次に、ユーザーは次のように入力できるはずです。

> lookup go 1

ユーザーが選択したコマンド ライン ブラウザを開き、最初の結果を表示します。

ただし、これには、スクリプトが最後のコマンドの結果を「記憶」する必要があります。

これを行う最善の方法は何ですか?結果を環境変数として保存する必要がありますか? (もしそうなら、これは独自のサブシェルでスクリプトを呼び出すのではなく、スクリプトをソースする必要があります。これはセキュリティ規則に反する/安全でない可能性がありますか?私にはまったくわかりません) 結果を一時テキストファイルに保存する必要がありますか?

同様の機能がgeeknoteに存在しますが、これは python で実装されているため、どこでこれを行っているかを調べるために掘り下げる必要があるかもしれません。ただし、解決策が私に当てはまるかどうかは完全にはわかりません。

4

1 に答える 1

2

ドット ファイルを使用して情報を保存できます。これは、シェルが複数のログインで .history ファイルに cmd を保存できるのと同じ方法です。

データをファイルに書き込む前に、評価のためにデータがクリーン/安全であることを確認することに自信がある場合は、スクリプトでソースとして値を簡単に使用できるように設定できます。それらを 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 に答える