运行另一个脚本并在BASH中发送参数?

时间:2012-05-19 08:00:26

标签: bash

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

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

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

    sort -nrk4 $file | source printer_script

done

printer_script:

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

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

2 个答案:

答案 0 :(得分:3)

因为使用管道,sort的输出将转到脚本的标准输入,而在其中,您正在查看参数;如果你想获取该输出并将其作为参数传递,你应该这样做:

./printer_script $(sort -nrk4 $file) 

答案 1 :(得分:1)

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

#!/bin/bash
read a b c
echo $c
echo $a
echo $b