vine-users ML アーカイブ



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

  • From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:071631] Re: 端末か らの入力をすべて
  • Date: Thu, 21 Apr 2005 22:21:19 +0900 (JST)
長南です。

藤田さんのスクリプトにしろ、谷村さんのスクリプトにしろ、事実上
シェルスクリプトによる簡易シェルを作っているわけですね。
最初に打ち込まれた単語が「検索」「時刻合わせ」などのときは、独自の
処理をし、それ以外のときは bash に渡してしまうという。

大西さんのメールより [vine-users:071626]
> 
> NIDAさんは、
> 
> >というようにコマンドとパラメータを 1 度の入力でできるなら、
> >
> だそうなので、
> read i p1 p2 p3 p4
> とでもする訳ですね。

変数は 2 個あれば足りるのではないでしょうか。read への入力は、
空白で区切られた最初の単語以外、二番目の変数に入るはずですから。

藤田さんと谷村さんのスクリプトを混ぜ合わせて、シェルらしくなるように、
ちょっといじってみました。

  $ cat minish
  #!/bin/sh
  while true
  do
          read -p "[minish]> " cmd args
          case $cmd in
          検索)
                  eval egrep $args;;
          時刻合わせ)
                  su -c "/usr/sbin/ntpdate ntp.hoge.ne.jp";;
          終了|exit)
                  echo "終了します"
                  exit;;   
          *)
                  eval $cmd $args;;
          esac
  done

でも、このシェルではコマンドラインの補完や履歴が使えないし、矢印キーも
使えない。あんまり便利じゃありませんね。元質問者の方の希望を実現する
方法としては、alias を使うのが一番現実的だと思います。すでにやって
いらっしゃるように。

-- 
長南洋一