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
$
は、どのように私は同じを得ることができますsh
とsource
の下に出力されますか?
スクリプトを実行し、それを調達することは別のものです。また、 'echo'を引用する必要があります。ありがとう@fedorqui。 – fedorqui
それは '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
あなたはどちらのシェルを使用していますか?それは 'zsh'でなければならないと思われます。そのシェル(Bash、Dash、Korn、zshを試してみました)だけが、表示しているスクリプトがソースになっているときに2行の出力を生成します。他のものは1行の出力を生成します(そして 'sh 'が出力に' -e'を追加するとBashが実行されます)。 –