我编写了许多用于测试或处理CSV文件的简单脚本。大多数脚本具有相同的逻辑:读取一个文件并将输出写入控制台或其他文件。对于这种情况,我通常使用最简单的实现方法:从stdin
读取,写入stdout
,因此调用如下:
script < input.csv > output.csv
你能否说一下为什么我更喜欢这种风格:
script input.csv > output.csv
甚至:
script input.csv output.csv
答案 0 :(得分: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
答案 1 :(得分:0)
这就是我现在处理相同任务的方式,类似于@ gniourf_gniourf的答案(除了我的脚本在Haskell中)。
当使用参数调用程序时,如-
,将它们视为输入文件并忽略标准输入,但特殊情况除外,当一个或多个参数为CMD
时。
当没有给出args时,读取标准输入。因此,CMD -
无args的调用等同于.container {
bottom: 0px;
display: flex;
flex-direction: column;
left: 0px;
position: absolute;
right: 0px;
top: 0px;
}
.container > .header {
background: yellow;
flex-shrink: 1;
}
.container > .content {
background: black;
color: white;
flex-grow: 1;
}
。