使用 run-parts 命令运行脚本时修复“执行格式错误”

当我试图 运行目录中的所有脚本 使用 run-parts 命令,我遇到了一个错误 – “运行部件:执行 script.sh 失败:执行格式错误”. 当我像“./script.sh”和“sh script.sh”一样直接执行它们时,这些脚本工作得很好。 但是当我使用 run-parts 命令运行它们时它们不起作用。 对于那些想知道的人,run-parts 命令将运行目录中的所有脚本。 如果您在运行脚本时遇到此类错误,此快速提示将帮助您在 Linux 中使用 run-parts 命令运行脚本时修复“执行格式错误”。

使用 run-parts 命令运行脚本时修复“执行格式错误”

为了运行 Documents 文件夹中的所有脚本,我运行了:

$ run-parts --regex '^s.*.sh

我收到以下错误消息:

run-parts: failed to exec Documents/script1.sh: Exec format error
run-parts: Documents/script1.sh exited with return code 1
run-parts: failed to exec Documents/script2.sh: Exec format error
run-parts: Documents/script2.sh exited with return code 1
run-parts: failed to exec Documents/script3.sh: Exec format error
run-parts: Documents/script3.sh exited with return code 1
run-parts: failed to exec Documents/script4.sh: Exec format error
run-parts: Documents/script4.sh exited with return code 1

运行部分:执行脚本失败。sh:执行格式错误

要修复“执行格式错误”,您需要添加一个 社邦 在脚本的开头,以便内核知道如何运行它们。 对于那些想知道的人,shebang 是由字符组成的字符序列 数字符号感叹号 (#!) 在脚本的开头。 当您在文本文件的开头添加 shebang 时,它会被解释为可执行文件。

大多数脚本都以 shebang 开头。 以下是一些典型的 shebang 示例。

伯恩贝壳,或兼容的外壳:

#!/bin/sh

重击:

#!/bin/bash

珀尔:

#!/usr/bin/perl

Python 2.x:

#!/usr/bin/python

Python 3.x:

#!/usr/bin/python3

这就是我们所说的shebang。

现在,让我们回到主题。 使用您喜欢的编辑器编辑您的脚本:

$ nano Documents/ostechnix.sh

在脚本开头添加以下 shebang:

#!/bin/sh

使用 run-parts 运行脚本时修复“执行格式错误”

现在,您可以使用 run-parts 命令运行脚本,而不会出现任何问题。

更新:

作为我们的读者之一 丹尼斯先生 在下面的评论部分提到,而不是硬编码解释器的路径,例如

#!/usr/bin/python3

我们可以用:

#!/usr/bin/env python3

这更 便携的 如果解释器安装在其他(非默认)目录中。 环境 是用于 Linux 和类 Unix 操作系统的 shell 命令。 shell 脚本经常使用它来启动正确的解释器。

你也可以使用 壳牌检查 实用程序来查找 shell 脚本中的问题。

  • ShellCheck – 一个免费实用程序,用于查找您的 Shell 脚本中的错误

下载免费指南:“高级 Bash 脚本指南”

希望这可以帮助。