You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用本地函数检测空字符串时myfunc运行异常问题咨询

问题原因

  • 函数定义语法错误:Bash 中函数声明有两种合法格式,要么带function关键字,要么函数名后加(),你当前写的myfunc {不符合语法规则,函数本身无法正常被识别执行。
  • 返回值判断逻辑颠倒:你写的zblank函数逻辑是:传入字符串为空/全空白时返回1,非空时返回0。而Shell中&&规则是只有前序命令退出码为0时才会执行后续语句,现在你传入的src、dst都是非空值,myzblank返回0,刚好触发了空白提示的打印,和预期逻辑完全相反。
  • 额外小问题:zblank中声明的declare -i f=1全程未使用,属于冗余代码;printf的换行符写为了硬换行,规范写法应该用\n转义。

修正后代码

zblank ()
{
  local s="$1"
  declare -i num=0
  [[ $s =~ ^[[:space:]]*$ ]] && num=1
  return $num
}

# 修正函数定义语法,补充()
myfunc()
{
  src="angio"
  dst="angio"
  (
    function myzblank() { zblank "$@"; }
    # 修正判断逻辑,用||表示前序返回非0(即字符串空白)时才打印提示
    myzblank "$src" || printf '%s\n' "src is blank"
    myzblank "$dst" || printf '%s\n' "dst is blank"
  )
}

内容的提问来源于stack exchange,提问作者Angio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:54:01