我可以在 Bash case 语句中使用函数作为测试吗?

von*_*otz 0 bash case

我可以在像这样的 bash 语句中使用函数而不是常规模式、字符串等吗case

#!/bin/bash

var="1"

is_one () {
[$var -eq 1]
}

case $var in

    is_one) 
    "var is one"
    ;;
    
    *) 
    "var is not one"
    break
    ;;
    
esac
Run Code Online (Sandbox Code Playgroud)

Soc*_*owi 5

您可以在语句中使用函数,也可以使用test/等程序[,即while, until, 和if。然而,该case语句仅允许模式,不允许程序/函数。

要么使用

if is_one; then
  echo "var is one"
else
  echo "var is not one"
done
Run Code Online (Sandbox Code Playgroud)

或者

case $var in
  1) echo "var is one" ;;
  *) echo "var is not one" ;;
esac
Run Code Online (Sandbox Code Playgroud)