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

test -L命令在终端与脚本中执行返回不同错误码排查

问题分析与解决

你的脚本存在核心错误,导致结果不符合预期:

  • 循环变量未正确引用
    脚本里的test -L d是直接使用了字面量字符串d,而非循环变量$d。这意味着每次循环都在检查当前目录下是否存在名为d的软链接,而非遍历到的目标路径,所以每次都会返回1。

    正确写法需要引用变量:test -L "$d"

另外还有一个可选优化点:for d in */会让变量d的取值带有末尾斜杠(比如_myOrg/、xxx/),虽然test -L可以识别带斜杠的软链接路径,但如果想要更严谨,也可以用参数展开去掉斜杠:test -L "${d%/}"

修改后的完整脚本:

#!/bin/zsh

pushd "$tyc" > /dev/null

for d in */ ; do
    if test -L "$d" 
    then
        echo 0
    else
        echo 1
    fi
done

popd > /dev/null

执行这个脚本就能得到你预期的0和1结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:15:08