如何将未压缩的文件传递给函数的参数

时间:2015-05-27 17:50:15

标签: bash pipe

我正在尝试提取.gz文件并将其传递给将其转换为分隔文件的函数。 .gz包含.grib2文件,我可以使用名为wgrib2的实用程序将其转换为csv。问题是我需要能够直接访问文件名。

这是我的非功能性脚本

#!/bin/bash
gunzip $1 | wgrib2 $arg1 -csv ${arg1/.grib2/.csv}

wgrib2需要三个参数:infile,format,outfile

我不一定知道文件名,所以我想要

1 个答案:

答案 0 :(得分:2)

<( )运算符将执行命令并将其stdout重定向到您可以传递给另一个程序的命名管道。 $( )运算符将执行命令并将其stdout插入到位。您可以使用这两个操作符zcat(将文件解压缩到stdout)和basename来执行您想要的操作。

wgrib2 <(zcat $1) -csv $(basename $1 .grib2).csv