2017-02-26 19 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がデフォルトでスペースで区切られているために発生します。あなたは、二重引用符引数によって、これをバイパスすることができます:

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

ああ、ありがとう!ありがとう!:-) – user1342645

0

猫/ grepコマンドの出力は、行全体2 wkdfgc sdkj dsこの文字列がSimpleFunctionに渡されたときに、2は、最初のパラメータがあるで、wkdfgc 2番目のパラメータであるというように。

echo $1echo $2とすると、最初の2つのパラメータが印刷されます。行全体を印刷したい場合は、echo $*

関連する問題