2015-04-01 64 views
0

如何使用shell脚本将参数以及stdin传递到程序中?Stdin和shell脚本的参数

如果我有这些数据,我该如何选择只有编号的列并将其输入到我的程序“./calculate < data”中作为标准输入?

数据:

ajk:1,2,3,4 
bcd:8,9,3,1 

回答

0

一个有点笨拙的方法:

./calculate < awk -F '[:, ]' '{print $2, $3, $4, $5}' data 

您的脚本,然后可以用一个循环默认情况下从标准输入读取:

while read v1 v2 v3 v4 
do 
# do stuff with four variables here 
done 

你也可以直接解析循环内的输入。我会离开那个为其他人发布。既然你没有注明你的shell - bash,ksh ....

+0

@jin抱歉,我正在使用bash。 如果我还通过intially调用了一个参数即ie。 ./calc.sh data.txt 2 3 4 5 其中2 3 4 5是参数,data.txt是标准输入数据如何在代码中区分这些数据? – 2015-04-01 02:54:04

+0

都不是。 data.txt和2 3 4 5都是shell参数:$ 1,$ 2,$ 3,$ 4,$ 5。 data.txt不是stdin。您必须重定向(使用管道或重定向运算符< or >以使stdin成为data.txt,否则stdin是您的键盘设备。 – 2015-04-01 18:43:44