私はシェル関数から数字を返すために「return」を使用し、関数から文字列を返すために「echo」が使用されることを知っています。
1. シェル関数は数値を返します。
function test1()
{
#some handling
return 0
}
2. シェル関数は文字列を返します。
function test2()
{
# some handling
echo "$data"
}
シェル関数が数値と文字列を返す必要がある状況があります。
3. シェル関数から数値と文字列を返します。
dummy algorithm
function validate()
{
var=$2
if var==something
return 1
else
# get modified varible
modifiedvar=call(var)
return 0 modifiedvar
}
validate "string"
最良のアプローチは何ですか?
ベストアンサー1
コマンド置換を使用して文字列をキャプチャし、戻り状態とともに「数値」をキャプチャできます。
f() {
echo "Don't panic"
return 42
}
result=$(f)
status=$?
echo "The function returned >$result< and $status"
The function returned >Don't panic< and 42
戻り状態は0から255までの数字であることを覚えておいてください。
$ f() { echo "$1"; return $2; }
$ result=$(f "big number" 300); status=$?
# ........................^^^
$ echo "The function returned '$result' and $status"
The function returned 'big number' and 44
# .....................................^^
$ result=$(f "small number" -300); status=$?
# ..........................^^^^
$ echo "The function returned '$result' and $status"
The function returned 'small number' and 212
# .......................................^^^