为什么这个比较返回不相等?

Mic*_*ant 0 scripting shell-script

似乎无法将此评估为真

is_equal () {
  in="$1"
  if [[ "$in" == "385" ]]; then
    return 0
  else
    return 1
  fi
}
a= is_equal 385
if [[ "$a" ]]; then
  echo "equal"
else
  echo "NOT equal"
fi

$ ./equal_nums.sh 
NOT equal
$
Run Code Online (Sandbox Code Playgroud)

gle*_*man 5

您的函数具有退出状态但没有输出。您的变量$a将始终为空,因此[[ $a ]]测试将始终为“假”

你真的想要这个:

if is_equal 42; then ...
Run Code Online (Sandbox Code Playgroud)

但你认为你想要的是这个

is_equal 42                # don't capture the output
a=$?                       # but do grab the exit status
if [[ $a -eq 0 ]]; then ...
Run Code Online (Sandbox Code Playgroud)