2015-04-01 65 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