1

CSV ファイルをテストまたは処理するための単純なスクリプトを多数作成しています。ほとんどのスクリプトのロジックは同じです。1 つのファイルを読み取り、出力をコンソールまたは別のファイルに書き込みます。そのような場合、私は通常、最も単純な実装アプローチを使用します: read from stdin、 write to stdout、呼び出しは次のようになります。

script < input.csv > output.csv

私がこのスタイルを好む理由をいくつか教えてください。

script input.csv > output.csv

あるいは:

script input.csv output.csv
4

2 に答える 2

0

両方を処理するスクリプトを作成する方法は次のとおりです(100%安全であるとは限りません。誰かがより良いオプションを提供したり、コメントで深刻な問題を特定したりできるかもしれません):

#!/bin/bash

if [[ -n $1 ]]; then
    exec "$0" < "$1" || exit $?
fi

# your program starts here, reading stdin, e.g.,
while read; do
   echo "$REPLY"
done
于 2012-11-29T18:52:50.427 に答える
0

これは、@gniourf_gniourf の回答と同様に、同じタスクを処理する方法です (私のスクリプトが Haskell にあることを除いて)。

などの引数を指定してプログラムが呼び出された場合、CMD INPUT1 [INPUT2 [...]]それらを入力ファイルとして扱い、標準入力を無視します。ただし、1 つ以上の引数が である場合を除きます-

引数が指定されていない場合は、標準入力を読み取ります。したがってCMD、引数なしの呼び出しは と同等CMD -です。

于 2016-11-23T19:26:00.950 に答える