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 ]
など)が必要になる可能性があるため、パラメータをハードコードすることはできません。ただし、1つしかない限り、[ 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 ]
やや関連: