1

我编写了许多简单的脚本来测试或处理 CSV 文件。大多数脚本具有相同的逻辑:读取一个文件并将输出写入控制台或另一个文件。对于这种情况,我通常使用最简单的实现方法: 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 [...]],将它们视为输入文件并忽略标准输入,除非一个或多个参数为-.

当没有给出参数时,读取标准输入。所以CMD不带参数的调用等效于CMD -.

于 2016-11-23T19:26:00.950 回答