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

如何编写自动创建并运行可执行文件的Shell脚本?解决文件找不到错误

问题解答

可行性说明

完全可行,脚本可以实现生成可执行文件并自动运行的操作,你当前的报错是因为脚本里缺少「创建可执行文件」的步骤,直接去操作一个不存在的文件导致的。

报错原因拆解

你的test.sh脚本有两个核心问题:

  1. 脚本里直接给fileName加执行权限并运行,但这个文件根本没被创建,自然会提示「No such file or directory」
  2. 报错里的空行提示(: No such file or directory),大概率是脚本用了Windows的CRLF换行格式,而Linux/bash只识别LF格式,导致解析出错

修复后的示例脚本

下面给两个实用的实现例子,你可以根据需求选:

例子1:生成Shell脚本类可执行文件

#!/bin/bash
# 先创建一个带执行逻辑的shell脚本文件
cat > fileName << 'EOF'
#!/bin/bash
echo "这是自动生成的可执行文件输出内容"
EOF
# 给文件添加执行权限
chmod +x fileName
# 运行该可执行文件
./fileName

例子2:生成并编译C程序为可执行文件(需系统安装gcc)

#!/bin/bash
# 先创建C语言源码文件
cat > temp.c << 'EOF'
#include <stdio.h>
int main() {
    printf("这是C编译后的可执行文件输出\n");
    return 0;
}
EOF
# 编译源码生成可执行文件fileName
gcc temp.c -o fileName
# 给可执行文件加权限(编译后默认已有,这步可选)
chmod +x fileName
# 运行可执行文件
./fileName
# 可选:清理临时源码文件
rm temp.c

关于sudo -i的使用

如果需要以root权限运行生成的可执行文件,不用在脚本里硬写sudo -i,两种更简单的方式:

  • 运行脚本时直接加sudo:sudo bash test.sh
  • 在脚本的运行命令前加sudo:sudo ./fileName

脚本格式修复(解决空行报错)

如果还有莫名的空行报错,把脚本转换成Linux兼容的LF换行格式:

  • 安装了dos2unix的话直接用:dos2unix test.sh
  • 没装的话用sed命令:sed -i 's/\r$//' test.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:35:02