ディレクトリ内のすべてのスクリプトを実行しようとしたとき run-partsコマンドを使用すると、エラーが発生しました- "run-parts:failed to exec script.sh:Exec format error" 。 「./script.sh」や「shscript.sh」のようにスクリプトを直接実行すると、スクリプトは問題なく機能しました。しかし、run-partsコマンドで実行した場合は機能しませんでした。不思議に思う人のために、run-partsコマンドはディレクトリ内のすべてのスクリプトを実行します。スクリプトの実行中にこのようなエラーが発生した場合、このクイックヒントは、Linuxでrun-partsコマンドを使用してスクリプトを実行する際の「Exec形式のエラー」を修正するのに役立ちます。
run-partsコマンドでスクリプトを実行するときの「Execformatエラー」を修正
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

run-parts:script.shの実行に失敗しました:実行フォーマットエラー
「Execフォーマットエラー」を修正するには、シバンを追加する必要があります スクリプトの開始時に、カーネルがスクリプトの実行方法を認識できるようにします。不思議に思う人のために、シバンは文字番号記号で構成される文字シーケンスです および感嘆符 (#! )スクリプトの先頭。テキストファイルの先頭にシバンを追加すると、実行可能ファイルとして解釈されます。
ほとんどのスクリプトはシバンで始まります。ここにいくつかの典型的なシバンの例があります。
ボーンシェル 、または互換性のあるシェル:
#!/bin/sh
バッシュ:
#!/bin/bash
Perl:
#!/usr/bin/perl
Python 2.x:
#!/usr/bin/python
Python 3.x:
#!/usr/bin/python3
これが私たちがシバンと呼んでいるものです。
それでは、トピックに戻りましょう。お気に入りのエディタを使用してスクリプトを編集します:
$ nano Documents/ostechnix.sh
スクリプトの先頭に次のシバンを追加します。
#!/bin/sh

run-partsを使用してスクリプトを実行するときの「Execフォーマットエラー」を修正
これで、run-partsコマンドを使用して問題なくrun-partsコマンドでスクリプトを実行できるようになりました。
更新:
読者の一人としてMr.Danesh 以下のコメントセクションで言及されています。通訳者のパスをハードコーディングする代わりに、たとえば
#!/usr/bin/python3
使用できるもの:
#!/usr/bin/env python3
これはよりポータブルです インタプリタが他の(デフォルト以外の)ディレクトリにインストールされている場合。 env LinuxおよびUnixライクなオペレーティングシステム用のシェルコマンドです。シェルスクリプトが正しいインタプリタを起動するためによく使用されます。
ShellCheckを使用することもできます シェルスクリプトの問題を見つけるためのユーティリティ。
- ShellCheck –シェルスクリプトのバグを見つけるための無料のユーティリティ
ダウンロード – 無料ガイド:「高度なBashスクリプトガイド」
これがお役に立てば幸いです。