0

我有一个需要分析的数据列表。我做的第一件事是检查文件是否确实是我想要的文件,然后我根据第 4 列对数据进行排序,然后我需要手动对排序后的行进行排序。

例如,我需要打印该行中的第三个单词,然后是第一个单词等。这是我写的:
mainScript :

#!/bin/bash
for file in `ls ${1}` ; do
    if [[ ! ($file = *.user) ]] ; then
        continue
    fi

    sort -nrk4 $file | source printer_script

done

打印机脚本:

#!/bin/bash
echo $3
echo $1
echo $2

即使我通过管道发送已排序的行,为什么什么也没有打印?

4

2 回答 2

3

因为通过管道,排序的输出进入脚本的标准输入,而在其中您正在查看参数;如果您想获取该输出并将其作为参数传递,您应该执行以下操作:

./printer_script $(sort -nrk4 $file) 
于 2012-05-19T08:05:07.753 回答
1

如果你想从管道中读取,printer_script 应该是:

#!/bin/bash
read a b c
echo $c
echo $a
echo $b
于 2012-05-19T08:19:56.587 回答