2017-02-26 59 views
-1

我是bash的新手,我无法弄清楚如何将这个结果传递给一个函数。我有一个看起来像一个文件:bash传递可执行参数到函数

1 df sadsd csd c 
2 wkdfgc sdkj ds 
3 sdjcvh sdch vsd h 
4 sjdch sdhc sd 

,我有,看起来像

SimpleFunction() { 
> echo $1; 
> echo $2; 
> } 

,我试图做的是这样一个功能:

SimpleFunction $(cat myfile | grep -i "2") ": line 2" 

,我期待输出看起来像

2 wkdfgc sdkj ds 
: line2 

但我得到

2 
wkdfgc 

我怎样才能得到我想要的结果?

回答

2

发生这种情况的原因是args默认由空间分隔。您可以通过双击引用ARGS绕过此:

SimpleFunction "$(cat myfile | grep -i '2')" ": line 2" 
+0

啊这么简单,谢谢!:-) – user1342645

0

猫/ grep命令的输出是整条生产线2 wkdfgc sdkj ds所以,当这字符串传递给SimpleFunction,2是第一个参数,wkdfgc是第二个参数等等。

当您echo $1echo $2,您正在打印前两个参数。如果要打印整行,请做echo $*