ホームページ > バックエンド開発 > Golang > Go から Linux シェル組み込みコマンドを実行するにはどうすればよいですか?

Go から Linux シェル組み込みコマンドを実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-26 12:30:13
オリジナル
407 人が閲覧しました

How to Execute Linux Shell Built-in Commands from Go?

Go プログラムでのシェル組み込みコマンドの実行

問題:
Linux シェル組み込みコマンドを実行しようとすると、 exec.Command を使用する Go プログラムからの「command」など、プログラムは失敗し、次のことを示すエラーが表示されます。実行可能ファイルがシステム パスに見つかりません。

解決策:

1. exec.LookPath の使用:

組み込みコマンドを実行するための Go のネイティブ アプローチの 1 つは、exec.LookPath 関数を使用することです。この関数は、指定されたコマンドをシステムで検索し、存在する場合はそのパスを返します。このメソッドを使用するには、まず exec.LookPath を使用してコマンドを見つけ、次に exec.Command を使用して必要な引数とともに実行します。

例:

path, err := exec.LookPath("command")
if err != nil {
    return fmt.Errorf("command not found: %w", err)
}
exec.Command(path, "-v", "foo")
ログイン後にコピー

2.システムコールの使用:

または、システム バイナリを使用してシェル コマンドを実行することもできます。次の例では、「-v」オプションと「foo」引数を指定して「command」コマンドを実行します。

exec.Command("system", "-c", "command -v foo")
ログイン後にコピー

3.シェル経由での実行:

必要に応じて、以下に示すようにシェルのパスを先頭に追加することで、シェル経由でコマンドを実行できます。

exec.Command("/bin/bash", "-c", "command -v foo")
ログイン後にコピー

注:

要件に基づいて適切な方法を使用することが重要です。ほとんどの場合、組み込みコマンドのネイティブ実行が可能になるため、exec.LookPath の使用が推奨されるアプローチです。ただし、より複雑なシナリオの場合、または他のシステム ツールと接続する場合は、システム バイナリを使用するか、シェル経由で実行する必要がある場合があります。

以上がGo から Linux シェル組み込みコマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート