if 절에서 확인한 조건을 통과하는 것이 가능합니까(https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html) 함수 인수로? 다음은 작동하지 않습니다.
print_message_if_condition_holds() {
local CONDITION="$1"
local MESSAGE="$2"
if $CONDITION; then
echo "$MESSAGE"
fi
}
print_message_if_condition_holds [ 0 -eq 0 ] "Success"
약간 다른 구문으로 수행할 수 있습니까?
답변1
이것이 얼마나 바람직한지는 잘 모르겠지만 각 마커를 별도의 위치 매개변수로 처리하면 가능합니다. 조건에 따라 다른 수의 토큰( [ -z str ]
등)이 필요할 수 있으므로 매개변수를 하드코딩할 수는 없습니다. 하지만 하나만 있는 한 [ str ]
순서를 바꾸고 실행할 수 있습니다.[ n -lt m ]
messaage
print_message_if_condition_holds() {
local message=$1
shift
local condition=("$@")
if "${condition[@]}"; then
echo "$message"
fi
}
print_message_if_condition_holds "Success" [ 0 -eq 0 ]
다소 관련됨: