我有一份需要分析的数据列表。我做的第一件事是检查文件是否确实是我想要的文件,然后根据第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
即使我通过管道发送排序的行,为什么没有打印出来?
答案 0 :(得分:3)
因为使用管道,sort的输出将转到脚本的标准输入,而在其中,您正在查看参数;如果你想获取该输出并将其作为参数传递,你应该这样做:
./printer_script $(sort -nrk4 $file)
答案 1 :(得分:1)
如果你想从管道读取,printer_script应该是:
#!/bin/bash
read a b c
echo $c
echo $a
echo $b