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

Jenkins调用外部Shell脚本报错:文件或目录不存在

问题解决:Jenkins外部Shell脚本执行报错“No such file or directory”

问题根源

你出错的代码行存在语法错误:

res=$("test -f $path && echo '1' || echo '0' ")

$()是Shell的命令替换语法,作用是执行括号内的命令并返回输出结果,但你给括号内的内容套了双引号——这会让Shell把整个字符串test -f $path && echo '1' || echo '0'当成一个完整的可执行文件名去查找,而非解析里面的test命令与逻辑运算符,自然会触发“No such file or directory”错误。

另外,变量$path未用双引号包裹,若路径包含空格,也会导致test命令解析异常。

修复后的Shell脚本代码

去掉多余的双引号,同时给变量引用添加双引号避免空格问题:

#!/bin/bash

basePath=$1
file=$2

path="$basePath/$file"
res=$(test -f "$path" && echo '1' || echo '0')

if [ "$res" == '1' ]
then
    # 此处编写你的后续逻辑
    echo "目标文件存在"
fi

额外优化方案

其实无需先存储结果,可直接在if判断中使用test命令,代码更简洁:

#!/bin/bash

basePath=$1
file=$2

path="$basePath/$file"

# 写法1:使用test命令
if test -f "$path"
then
    echo "目标文件存在"
fi

# 写法2:使用更简洁的[]语法
if [ -f "$path" ]
then
    echo "目标文件存在"
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:28:50