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

Bash脚本运行时无法stat自身问题求助

问题原因分析与解决方案

看起来你脚本里的这条stat命令被Shell当成了单一的命令名来执行,而不是调用stat工具并传递参数。从报错信息./a: line 60: stat -c %Y '/home/agrillet/a': No such file or directory就能看出来——Shell在尝试查找一个名为stat -c %Y '/home/agrillet/a'的命令,而不是执行stat并给它传参数。

为什么会这样?大概率是你在脚本里写这条命令的方式有误:

  • 可能把整个命令用双引号/单引号括起来了,比如写成了"stat -c %Y '/home/agrillet/a'";
  • 或者把命令存在变量里后直接执行,比如cmd="stat -c %Y '/home/agrillet/a'"然后$cmd,这种写法会让Shell把变量内容当作单一命令解析。

而你能成功执行cat /home/agrillet/a,是因为这条命令没有被错误包裹,Shell能正确识别cat是命令,后面的路径是参数。


解决方法

1. 修正stat命令的写法

直接在脚本里写无额外包裹的命令(路径含空格时才需要引号,这里路径没问题,加引号也不影响):

stat -c %Y '/home/agrillet/a'

确保不要把整个命令用引号括起来,让Shell能正确拆分stat作为命令,-c、%Y、/home/agrillet/a作为参数。

2. 更优雅地获取脚本自身信息(推荐)

硬编码脚本路径不够灵活,如果脚本被移动或创建符号链接,路径就会失效。推荐用$0变量(代表脚本自身的调用路径)结合工具获取绝对路径:

# 获取脚本的绝对路径(处理符号链接,需要readlink工具)
script_path=$(readlink -f "$0")
# 部分系统可用realpath替代readlink
# script_path=$(realpath "$0")

# 用stat获取脚本的修改时间
stat -c %Y "$script_path"

这种写法不管脚本在哪里被执行,都能正确定位到自身并获取信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:01:57