看板 LinuxDev 關於我們 聯絡資訊
※ 引述《milochen (N=NP)》之銘言: : #!/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 能夠有個模組化的開發, 所以在思考用怎樣的方式, : 才能實現函數回傳「字串」的概念。 在 Bash 裡面傳出 string 並不是不可能的, 只是不能用 return 的方式. 您會使用 function 的參數傳入, 相同的, 在 function 裡, 也可以把傳入 的參數當做變數傳值到外面去, 舉例來說, 以下的函式 func 會用 date 產生的日期字串傳出來. function func { STR="`date`" expr "$1=\"$STR\"" } 然而, 用(呼叫)的時候, 像以下這樣, func var1 echo $var1 需要注意的是, expr "$1=\"$STR\"" 如果寫成 expr "$1=$STR" 也不是不行, 只是如果 $STR 裡有空白字元的話, 空白後面的部份會被解析成命令而發生錯誤. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.207.134 ※ 編輯: phterry 來自: 60.249.207.134 (01/17 14:03)