為什麼這篇shell script變數宣告鄉民發文收入到精華區:因為在shell script變數宣告這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者phterry (小風)看板LinuxDev標題Re: [問題] 如何讓Shell Script...
※ 引述《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)