Bash函數只是語句,它們不返回值。任何人都可以分享編寫在bash中返回值的函數的最佳做法嗎?如何模仿在bash中函數返回的任意值?
比方說,我已經將兩個字符串的函數:
function JoinStrings {
returnValue="$1$2"
}
如何重用我的代碼,這個功能呢?我如何將returnValue
退回給呼叫者?我應該在這個函數調用之後將它用作全局嗎?這導致了無處不在的全局變量的許多錯誤......如何在bash中實現代碼重用?
Bash函數只是語句,它們不返回值。任何人都可以分享編寫在bash中返回值的函數的最佳做法嗎?如何模仿在bash中函數返回的任意值?
比方說,我已經將兩個字符串的函數:
function JoinStrings {
returnValue="$1$2"
}
如何重用我的代碼,這個功能呢?我如何將returnValue
退回給呼叫者?我應該在這個函數調用之後將它用作全局嗎?這導致了無處不在的全局變量的許多錯誤......如何在bash中實現代碼重用?
您可以使用echo
「重返」的任意值:
join_strings() {
echo "$1$2"
}
cat="cat"
dog="dog"
catdog=$(join_strings $cat $dog)
echo $catdog
# catdog
這很酷 - 我不知道。謝謝! – bodacydo
只輸出值。
function JoinStrings {
echo "$1$2"
}
JoinStrings a b #ab
x=$(JoinStrings a bc) #x is now abc
哇,真好!謝謝! – bodacydo
「功能」是真的該位殼的名字的一個糟糕的選擇; 「子程序」會更好,因爲它們實際上不會返回一個值。 (即使'返回'只是設置退出狀態,其語義與異常比返回值有更多共同之處。) – chepner