如何像这样解释以下代码(?)那样对cat
的输入进行排序:
function sort_input {
output_filename=${1}
# How can I sort the input (What that this function get from `cat`) into `output_filename` ?
}
cat ${1} | sort_input ${1} # I don't want to change this line!
脚本作为参数获取:文件名。
说明:如何编写sort_input
函数,以便该函数可以对cat ${1}
发送的输入进行排序[并将排序结果插入到文件output_filename
]?
答案 0 :(得分:1)
您想要的功能非常简单:
sort_input () {
sort -o "$1"
}
sort
将从函数继承其标准输入,因此sort_input foo < foo
与sort -o foo < foo
相同。 -o
内部涉及一个临时文件,因此即使您使用相同的文件进行输入和输出,它也可以正常工作。
答案 1 :(得分:0)
更多选项:(没有临时文件)
之后,我看到了@PesaThe的答案,我认为我们可以在没有临时文件的情况下做到这一点:
#!/usr/bin/env bash
sort_input() {
sort /dev/stdin > "$1"
}
cat "$1" | sort_input "$1"