2015-12-03 62 views
1

Bash函數只是語句,它們不返回值。任何人都可以分享編寫在bash中返回值的函數的最佳做法嗎?如何模仿在bash中函數返回的任意值?

比方說,我已經將兩個字符串的函數:

function JoinStrings { 
    returnValue="$1$2" 
} 

如何重用我的代碼,這個功能呢?我如何將returnValue退回給呼叫者?我應該在這個函數調用之後將它用作全局嗎?這導致了無處不在的全局變量的許多錯誤......如何在bash中實現代碼重用?

+1

「功能」是真的該位殼的名字的一個糟糕的選擇; 「子程序」會更好,因爲它們實際上不會返回一個值。 (即使'返回'只是設置退出狀態,其語義與異常比返回值有更多共同之處。) – chepner

回答

2

您可以使用echo「重返」的任意值:

join_strings() { 
    echo "$1$2" 
} 

cat="cat" 
dog="dog" 
catdog=$(join_strings $cat $dog) 
echo $catdog 
# catdog 
+0

這很酷 - 我不知道。謝謝! – bodacydo

2

只輸出值。

function JoinStrings { 
    echo "$1$2" 
} 
JoinStrings a b   #ab 
x=$(JoinStrings a bc) #x is now abc 
+0

哇,真好!謝謝! – bodacydo