[問題] 如何讓Shell Script裡的函數return 字串?
#!/bin/sh
function func()
{
local lsh=$1
local rsh=$2
local ret=0
local ret_str="$lsh_$rsh"
echo -n ${ret_str}
return $ret
}
$str="0123456789"
echo $( echo ${str:2:3}) #印出 234
echo $(func ab cd) # 願望能印出 ab_cd
不好意思,小弟最近在思考,到底要如何把Bash 作到模組化
目前知道,像function 的 傳入參數的觀念,
可以靠$1, $2 與local宣告來達成近似的效果。
不過return 的部份,目前仍然只知道函數只能回傳 數值,而非字串。
是因為我想要讓 Bash 能夠有個模組化的開發, 所以在思考用怎樣的方式,
才能實現函數回傳「字串」的概念。
在想不出來的情況下,在此請教版上各位高手了。
謝謝
一般來說,我自己是想到有兩種辦法可以實現函式回傳字串的概念,
但都不是很好的方法 XD
方法一:
一個是使用全域變數 但我的理解裡,
只知道這方法用下去,我可能自己把Shell Script寫到很大時,會遇到維護上的難度
方法二:
把單一 function 寫成一個檔案,然後透過
var1=$(source callfunc.sh arg1 arg2)
var2=$(sh callfunc.sh arg1 arg2)
的方式來達成。 但是這樣子又變成是一個檔案寫一個function了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.208.148.156
※ 編輯: milochen 來自: 210.208.148.156 (01/16 21:11)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章