環境大学の齊藤です

Anonymous Buddha wrote:
> csh でスクリプトを書いたのですが、引数指定でも標準入力でも同様の動作をさせ
> たい為に、

というと、
cat "$@" | ...
で済むシチュエーションを普通は指すのかとおもったですが。。。
今回は違うようですね。


> #!/bin/csh/
やはりshで書きませんか?
shなら、

if [ $# -eq 0 ] ;then
        cat
else
        echo "$@"
fi |
  **処理本体(標準入力を読む)**

と書けるのですがねぇ。


標準入力から与えられるファイル量が小さい(max 1KBとか)ことが
わかっているなら、
if [ $# -eq 0 ]
        set `cat `
fi
処理($*を処理する)

と書いたり。

標準入力からのデータを1行ずつ処理するのなら、

if [ $# -eq 0 ] ;
        line="$*"
        exec 0< /dev/null
else
        read line
fi
while : ;do
        $lineを処理する
        read line ||break
done

とかいう書き方もあり得ますね。

--

        齊藤明紀 saitoh at kankyo-u ac jp
まちがってシグネチャにメールアドレスを書いてしまったので、
キャンセルして再投稿。