2016-07-26 49 views
0

我的殼a.sh這樣的腳本不同:爲什麼它運行的源和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

+0

謝謝@fedorqui。這意味着'echo -e「$ ret」' 我知道'sh'或'source'是不同的調用方式,我們可以看到細節[運行shell腳本爲./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

你正在使用哪個shell?看來它必須是'zsh';只有那個shell(在Bash,Dash,Korn和zsh嘗試過的時候)會在你顯示的腳本來源時產生雙行輸出;其他產生一行輸出(並且Bash以'sh'運行,將'-e'加到輸出中)。 –

回答

0

如何在shsource下獲得相同的輸出?

您需要引用echo。 - fedorqui

謝謝@fedorqui。這意味着echo -e "$ret" - tonylee0329

確切地說,引用echo的論點是調整兩個炮彈'echo s之間差異的方法。