GNU/Linux >> Linux の 問題 >  >> Linux

run-partsコマンドでスクリプトを実行するときの「Execフォーマットエラー」を修正

ディレクトリ内のすべてのスクリプトを実行しようとしたとき 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スクリプトガイド」

これがお役に立てば幸いです。


Linux
  1. Linuxでの入出力とエラーリダイレクトの操作

  2. Linuxでコマンドが見つからないというエラーを修正する方法

  3. 既存の関数と同じ名前のパスで実行可能ファイルを実行しますか?

  1. LinuxMint12でFirewallDが実行されていないエラーを修正

  2. プロキシの背後にいるときに wget 接続拒否エラーを修正する方法

  3. ポート 80 で Node.js を実行する場合のベスト プラクティス (Ubuntu / Linode)

  1. 使用できないコマンドを実行するときにパッケージのインストールを提案する

  2. [OpenStack-Devstack]:エラー:stack.shの実行時にサービスn-netが実行されていません

  3. 引数なしでコマンドを実行しないようにするシェルスクリプトラッパー?