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

开启set -u的zsh脚本中如何单次赋值实现可选参数basename提取

解决zsh 5.8.1中单次赋值实现basename/空值的需求

可以通过无空格的嵌套参数展开实现单次赋值,正确写法如下:

set -u
var=${${1:-}:t}

细节说明:

  • ${1:-}:在set -u模式下,避免未传参数时访问$1触发报错——若$1不存在则返回空字符串,存在则返回参数本身。
  • :t:zsh专属的参数修饰符,用于提取路径的basename(即文件名部分)。对空字符串使用该修饰符仍返回空,完全匹配需求。

你之前的写法var=${ ${1:-}:t }报错,是因为参数展开内部添加了空格,zsh不允许这种语法,去掉空格即可正常运行。

测试验证:

  1. 传入文件路径参数时:
    ./your_script.sh /home/user/demo.pdf
    echo $var  # 输出 demo.pdf
    
  2. 不传入参数时:
    ./your_script.sh
    echo $var  # 输出空字符串
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:34:58