over 4 years ago

當shell script寫好之後

可以透過

sh filename.sh  

或是

source filename.sh  

來運行

但不才小弟最近才知道這兩個的不同...囧

查了一下stackoverflow,得到一個不錯的答案 http://stackoverflow.com/a/13786536

source: 將script運行到現有的bash process

sh:folk新的sub process來運行script,所以變數在執行完後就會被drop掉

舉個例子

test.sh
#!/bin/sh  

STR="Hello World"  
echo $STR  

透過 sh

sh test.sh  
Hello World  
echo $STR  

因為變數只存在sub process中,跑完就掰了

透過 source

source test.sh  
Hello World  
echo $STR  

Hello World 因為是直接將script插入到目前的bash,所以變數還在

所以說,如果要透過shell script來設定變數,記得要用source來跑,才能繼續在原本的bash中使用設定好的變數!

← OpenDDS - Install [Javascript] event binding 傳遞參數 →
 
comments powered by Disqus