2016-07-26 1 views
0

に私のシェルを呼び出し元とshのために異なる動作しますなぜa.shこのようなスクリプト:さまざまな方法でそれはシェル

#!/bin/sh 
# $ret maybe from database or pipe,whatever it likes: 
ret="cnt 
1" 

echo -e $ret 

と呼び出しは異なる結果を生成します。

$ sh a.sh 
cnt 1 
$ source a.sh 
cnt 
1 
$ 

は、どのように私は同じを得ることができますshsourceの下に出力されますか?

+0

スクリプトを実行し、それを調達することは別のものです。また、 'echo'を引用する必要があります。ありがとう@fedorqui。 – fedorqui

+0

それは 'echo -e" $ ret "を意味します。 私は' sh'または 'source'が異なる呼び出し方法であることを知っています。詳細は次のとおりです[シェルスクリプトを./script.shとsh script.sh ](http://stackoverflow.com/questions/2468132/whats-the-difference-between-running-a-shell-script-as-script-sh-and-sh-script) – tonylee0329

+0

あなたはどちらのシェルを使用していますか?それは 'zsh'でなければならないと思われます。そのシェル(Bash、Dash、Korn、zshを試してみました)だけが、表示しているスクリプトがソースになっているときに2行の出力を生成します。他のものは1行の出力を生成します(そして 'sh 'が出力に' -e'を追加するとBashが実行されます)。 –

答えて

0

shsourceで同じ出力を得るにはどうすればよいですか?

echoを引用する必要があります。 - fedorqui

ありがとう@fedorqui。つまり、echo -e "$ret" - tonylee0329

正確には、引用符echoの引数は、2つのシェル 'echoの違いを調整する方法です。

関連する問題