2005年4月20日

[vine-users:071608] Re: 端末からの入力をすべて

長南です。

# 同じ話題が続いている間は、スレッドをつなげておいてください。

NIDA さんのメールを誤読しているような気もするのですが……。

NIDA さんのメールより [vine-users:071604]
>
> 形としては、たとえば端末から
> "検索、キーワード, ~/txt"

> と入力した場合は、
> "検索、キーワード, ~/txt"
> を引数にして ~/bin/hoge.pl を呼び出して、hoge.pl の中から、
> "~/bin/kensaku.pl キーワード ~"
> を 呼び出す、...というような感じです。
> # 区切り文字には、"、", ",", " " などを使います。

「検索」「時刻合わせ」「アップロード」、どう打ち込もうと、hoge.pl を
呼び出したいということですね。

面白いことをお考えになっていると思います。しかし、コマンドラインの
最初の単語はコマンド名でしょう(if のようなキーワードや変数名である
こともありますけれど)。つまり、「検索」であれ、「時刻合わせ」であれ、
「アップロード」であれ、コマンドラインの最初にそう打ち込めば、そういう
名前のコマンドが実行されてしまう。

そこで、「検索」「時刻合わせ」「アップロード」という、どの名前でも
hoge.pl を実行したいのなら、hoge.pl を「検索」「時刻合わせ」などの
リンク先とし、呼び出された名前によって別のプログラムを実行するように
hoge.pl を作ればよさそうです。

シェルスクリプトによる簡単な例:
$ ln -s hogehoge 検索
$ ln -s hogehoge 時刻
$cat hogehoge
#!/bin/sh

cmd=${0##*/}

if [ $cmd = "検索" ]
then
echo "検索です"
elif [ $cmd = "時刻" ]
then
echo "時刻合わせです"
else
echo "hogehoge です"
fi


> 今のところ、
> alias 検索='~/bin/kensaku.pl'
> として、
> kensaku.pl を呼び出し、STDIN から
> "キーワード、~"
> というようにパラメータを渡しているんですが、
> "検索、キーワード, ~/txt"
> というようにコマンドとパラメータを 1 度の入力でできるなら、
> そっちの方がはやいかなと。

この例だけなら、コマンドラインの引数を利用するように kensaku.pl を書いて
おけばすむのではないでしょうか。

# 区切り文字の方はわかりません。上の例なら、「キーワード」以降は
# perl スクリプトの方で処理すればよいでしょうが、コマンド名の
# 「検索」と引数の間の区切りを空白以外にするにはどうすればよいのか。
# 区切りは「空白、タブ」にしておくのが、一番無難だと思いますが。

--
長南洋一

投稿者 xml-rpc : 2005年4月20日 16:55
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/13409
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。