나는 쉘 함수에서 숫자를 반환하기 위해 "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
# .......................................^^^
답변2
이런 것을 찾고 계십니까?
스크립트:
#!/bin/bash
var="$1"
function f() {
if [[ -z "$var" || "$var" = "error" ]]; then
return 1
else
var="bar"
return 0
fi
}
if f; then
echo "function returned $?"
echo "$var OK"
else
echo "function returned $?"
echo "error"
fi
$ ./script
function returned 1
error
$ ./script "error"
function returned 1
error
$ ./script "foo"
function returned 0
bar OK