当我试图 运行目录中的所有脚本 使用 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 脚本指南”
希望这可以帮助。