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

tcsh中无法用-h测试标志判断符号链接,脚本报错求排查

解决tcsh中判断符号链接的报错问题

你在tcsh里用-h作为符号链接的测试标志确实是操作有误哦——tcsh的文件测试操作符和bash等shell存在差异,-h在tcsh里并不是用来判断符号链接的,它的作用是测试文件是否带有hidden隐藏属性(对应chflags设置的hidden标记),这就导致你的条件判断被错误识别为数值相关检查,从而抛出Error: if: Badly formed number的报错。

正确的写法

在tcsh中,判断一个文件是否为符号链接,需要使用-l这个测试操作符。修正后的代码如下:

#!/bin/tcsh
foreach i (`ls`)
if ( -l "$i" ) then
echo $i
endif
end

额外优化建议

另外,用ls命令的输出结果来遍历文件并不是最佳实践,当遇到文件名包含空格、特殊字符时容易出现遍历错误。更稳妥的方式是直接用通配符*来遍历当前目录下的所有文件:

#!/bin/tcsh
foreach i (*)
if ( -l "$i" ) then
echo $i
endif
end

这样就能更可靠地筛选出当前目录下的所有符号链接文件啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:00:52