bash将可执行参数传递给函数

时间:2017-02-26 22:36:04

标签: linux 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 个答案:

答案 0 :(得分:2)

这是因为args默认是由空格分隔的。你可以通过双引用args来绕过这个:

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

答案 1 :(得分:0)

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

当您echo $1echo $2时,您将打印前两个参数。如果要打印整行,请执行echo $*